首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GO 文档笔记

(1.14.3版本貌似不是自带工具了, 需要安装(配置代理): go get golang.org/x/tools/cmd/godoc) 运行命令: godoc -http=:8888....可以直接在本地浏览器访问8888端口, 查看这个运行在本地文档服务: localhost:8888. 能够看到所有官方包文档. 而这些文档内容都是从官方代码包中读取....image-20200719145327838 既然人家官方代码能生成文档, 那就说明是有文档生成格式呀. 既然不知道如何写文档, 抄官方样式不就行了么? nice....以下是多处借鉴后, 总结 GO 文档书写规则. 文档 经过测试, GO 文档格式, 全局变量/常量/函数/结构体/接口/包等等, 声明格式都一样, 会读取对应内容上方紧跟着注释内容...._2() { fmt.Println("bbb") } godoc检测示例代码: ?

1K40

如何写高大上 godoc(Go 文档)

自建 godoc 有两个作用,一是解决某局域网内无法访问 godoc.org 尴尬,另一个则是可以本地调试自己文档。...://127.0.0.1:6060 之后,就可以看到熟悉 Go 文档页面了: [xcdrgw4rh.png] 原理上,godoc 读取包路径来自于 $GOROOT。...在代码中,对于 Set() 函数是这么写(请无视蹩脚英文): // At completes the following operation of Set()....解析并格式化效果如下: [q2nb12x6mb.png] godoc 代码示例 读者可以注意到,在 At() 函数下,除了上文提到文档正文之外,还有五个代码示例。...在代码中,把这个函数命名为: func ExampleSet_At_1() { ...... } 这个函数命名有几个部分:  函数名组成部分   说明 Example 这是示例代码固有开头

9.9K150
您找到你想要的搜索结果了吗?
是的
没有找到

作为 Gopher,你知道 Go 注释即文档应该怎么写吗?

,一个是用来本地调试自己 GoDoc 显示效果;另一个是在无法科学上网时候,用来本地搭建 GoDoc 服务器之用。...type SomeTypeA struct{} // 这一行与 SomeTypeB 定义之间隔了一行, // 所以并不会认为是 SomeTypeB GoDoc。...实际上,在注释中如果只是单纯一个换行另写注释的话,在页面是不会将其当作新一段来看待GoDoc 逻辑,也仅仅渲染完这一行之后,再加一个空格,然后继续渲染下一行。...在代码中,把这个函数命名为: func ExampleSet_At_1() { ...... } 这个函数命名有几个部分: 函数名组成部分 说明 Example 这是示例代码固有开头 Set...如果一个元素包含多个例子,那么 godoc 会按照字母序对示例及其相应说明排序。这也就是为什么干脆在 At() 函数中,示例标为一二三四五原因,因为这是希望读者阅读示例顺序。

3.8K81

go 命令

gcflags "-N -l" 参数关闭编译器代码优化和函数 内联,避免断点和单步执行无法准确对应源码行,避免小函数和局部变量被优化掉。...go install 这个命令在内部实际上分成了两步操作:第一步是生成结果文件(可执行文件或者.a 包), 第二步会把编译好结果移到$GOPATH/pkg 或者 $GOPATH/bin。...go test 自动读取源码目录下面名为*_test.go 文件,生成并运行测试用可执行文件。...go doc 查看对应包文档,如 执行 go doc net/http 查看http包里面的函数. 一般使用ide 直接进去看,一般不这么用。 godoc -http=:端口号,配置GOPATH....如 godoc -http=:8080, 浏览器中访问 http://localhost:8080,查看本地和自己写文档 go doc fmt Printf go fix 用来修复以前老版本代码到新版本

67710

作为Gopher,你知道Go注释即文档应该怎么写吗?

目前godoc和pkgsite有两个作用,一个是用来本地调试自己GoDoc显示效果;另一个是在无法科学上网时候,用来本地搭建GoDoc服务器之用。 二、godoc命令 我们从工具命令开始讲起吧。...实际上,在注释中如果只是单纯一个换行另写注释的话,在页面是不会将其当作新一段来看待GoDoc逻辑,也仅仅渲染完这一行之后,再加一个空格,然后继续渲染下一行。...(一)示例代码声明 如何声明一个示例代码,这里举两个例子。首先是在At()函数下名为“Example (1)”示例。...在代码(https://github.com/Andrew-M-C/go.jsonvalue/blob/master/example_jsonvalue_test.go#L112)中,把这个函数命名为...如果一个元素包含多个例子,那么godoc会按照字母序对示例及其相应说明排序。这也就是为什么干脆在At()函数中,示例标为一二三四五原因,因为这是希望读者阅读示例顺序。

1K20

Golang之go 命令用法

由于之前已经有的一些习惯或其它原因我们常将代码写成ANSI风格或者其它更合适自己格式,这将为人们在阅读别人代码时添加不必要负担,所以go强制了代码格式(比如左大括号必须放在行尾),不按照此格式代码将不能编译通过...接下来一节将讲述两个工具,这两个工具都自带了保存文件时自动化go fmt功能。 使用go fmt命令,其实是调用了gofmt,而且需要参数-w,否则格式化结果不会写入文件。...fmt.Printf里面的参数不正确,例如函数里面提前return了然后出现了无用代码之类。.../x/tools/cmd/godoc 很多人说go不需要任何第三方文档,例如chm手册之类(其实已经做了一个了,chm手册),因为它内部就有一个很强大文档工具。...例如builtin包,那么执行godoc builtin 如果是http包,那么执行godoc net/http 查看某一个包里面的函数,那么执行godoc fmt Printf 也可以查看相应代码

5.2K20

Go语言中结构体打Tag是什么意思?

前言 哈喽,大家好,是asong。今天想与大家分享Go语言中结构体标签是怎么使用,以及怎样定制自己结构体标签解析。...大多数初学者在看公司项目代码时,看到一些结构体定义会是这样: type Location struct { Longitude float32 `json:"lon,omitempty"` Latitude...上面的例子中,标签json:"lon,omitempty"代表意思是结构体字段值编码为json对象时,每一个导出字段变成该对象一个成员,这个成员名字为lon或者lat,并且当字段是空值时,不导出该字段...结构体标签是在编译阶段就和成员进行关联,以字符串形式进行关联,在运行阶段可以通过反射读取出来。...,是asong,我们下期见。

99950

Jenkins文件读取漏洞拾遗(CVE-2024-23897)

实际测试中,如果我们访问Jenkins首页,发现强制跳转到登录页面,或者啥功能都没有直接报权限错误,就说明关闭了“匿名用户读”选项。...remember-me Cookie生成与校验是在hudson.security.TokenBasedRememberMeServices2#makeTokenSignature函数中,这个函数代码很简单...在抓cli请求包时候,关注到协议中是存在一个字符集设置: 阅读代码可以发现,这个字符集可以通过Java客户端file.encoding来配置。...我们看下args4j中解析@符号代码,可以发现其使用是new BufferedReader(new FileReader(f))来读取文件: 查看FileReader函数文档可以看出,如果其构造函数不传入第二个参数...因为这部分代码在args4j中,在读取文件时候就已经使用UTF-8编码,导致二进制信息丢失,后续客户端传入charset是什么都不会影响返回结果中占位符了。

4.7K30

Go语言变量,常量,作用域

// test // 带有test.go文件在build被忽略,会自动读取源码目录*_test.go文件,生成并运行测试用可执行文件 // 性能测试系统可以给出代码性能数据,帮助测试者分析性能问题...格式: // import "name" // 其中import为导入包关键字, name为导入包名字 // 导入fmt包,这行代码会告诉Go编译器,我们需要用到fmt包中函数或者变量等,fmt...Go语言main()函数不能带参数,也不能定义返回值,命令行传入参数在os.Arga变量里保存,如果需要支持命令行开关可使用flag包. /* 是一个注释 这里调用fmt包下Println...# 多重赋值让Go语言比其他语言减少了代码量。 匿名变量 # Go语言函数可以返回多个值,而事实上我们并不是对所有的返回值都用 得上。那么就可以使用匿名变量,用“_”下划线替换即可。...# 匿名变量不占用命名空间,不会分配内存。

1.1K50

进程间通信--管道

此外管道文件创建需要同时以读和写打开一个文件,因为如果是以只读或者只写方式打开,子进程也就只能继承只读或者只写,无法实现一个进程读一个进程写,也就无法通信,值得一提是同时以读和写方式打开一个文件,...:1.建立匿名管道(让父子进程共享(能看到)同一段资源) 2.利用这个内存级文件实现进程间通信(子进程写入,父进程读取) //这段共享资源是由操作系统来建立,因为进程具有独立性,如果由进程来建立,非此进程无法看到...4.基于匿名管道简单进程池 设计一个由父进程负载均衡式给子进程装载任务简单进程池: 1.首先要让父进程创建一批管道和一批子进程,一个管道对应一个子进程 2.建立一批任务,将任务装载到一个函数指针数组中...return 0; } 写这样代码很容易存在一个这样问题: 因为子进程会拷贝父进程文件描述符表,也就是说当父进程创建一个管道文件后,假设写端是3文件描述符,此时再创建一个子进程,此时子进程文件描述符表中...3也会指向那个管道文件,也就说这个管道文件写端被两个进程所指向了,当我关闭父进程写端后,所期望是子进程读到0,然后退出;但是由于还有其他进程指向这个管道文件,所以该子进程无法直接读到0,此时子进程就会阻塞式等待读

18230

javascript中闭包这一篇就够了

,在第二段代码中,函数A内匿名函数可以访问到函数A中局部变量这就是闭包基本使用。...,读取变量顺序,先读取本地变量,再读取函数局部变量,如果找不到到全局里面搜索,i作为局部变量存到闭包里面,所以调整后代码可以能正常打印1,2,3。...发现它localVal变量被匿名函数引用,所有A函数无法释放,导致内存泄漏。...在JS中调用函数时候,如果用一个参数方法调用两个参数方法,这时候只是第二个参数未定义,代码不会报错停止运行,正常流程往下走,像面试题中仍然会返回一个对象。...总结 闭包其实是在函数内部定义一个函数。 闭包在使用时候不会释放外部引用,闭包函数内部值会得到保留。 闭包里面的匿名函数读取变量顺序,先读取本地变量,再读取函数局部变量。

57620

深度阅读之《Mastering Go》

可以直接在命令行执行 go doc strings.Fields 获取库函数解释;执行 go get golang.org/x/tools/cmd/godoc 会安装 godoc 工具,注意这两者是不同...下面的代码用于从标准输入读取数据,每读出一行就打印出来: func main() { var f *os.File f = os.Stdin defer f.Close() scanner :...为了让三色标记结果不受并发执行程序影响,在整个标记过程中,要确保一个不变性:黑色集合里对象保证不会指向白色集合里对象,注意这并不影响一个白色对象指向黑色对象。...所有在 UNIX 系统上运行程序最终都会通过 C 系统调用来和内核打交道。用其他语言编写程序进行系统调用,方法不外乎两个:一是自己封装,二是依赖 glibc、或者其他运行库。...一开始没发现这个文件,直接拿样例代码全局搜,一下就找到了。

61230

Python函数基础

大家好,又见面了,是你们朋友全栈君。...而函数是一种代码块,代码块是一个解释单元,是一个整体。在代码块范围内不会忘记读取行,也不会读一行就立即解释一行,而是读取完所有代码块内行,然后统筹安排地进行解释。...当python读取到def所在行时候,知道这是一个函数声明语句,它有一个属于自己代码块范围,于是会读完整个代码块,然后解释这个代码块。...换句话说,在def声明函数过程中,在函数被调用之前,函数所记录变量一直都是变量地址,或者通俗一点理解为记录变量名称,而不会进行变量赋值替换。 实际上,变量明确值会当作常量被记录起来。...在python中使用lambda关键字声明匿名函数,python中lambda是一个表达式而不是一个语句,这意味着某些语句环境下可能无法使用def声明函数,但却可以使用lambda声明匿名函数

44020

第11节 编码规范

语言自带 godoc 工具可以根据注释生成文档,生成可以自动生成对应网站( golang.org 就是使用 godoc 工具直接生成),注释质量决定了生成文档质量。...包评论应该介绍包,并提供与整个包相关信息。它将首先出现在 godoc页面上,并应设置下面的详细文档。...// 用户名 Email string // 邮箱} 3、函数(方法)注释 每个函数或者方法(结构体或者接口下函数称为方法)都应该有注释说明,函数注释应该包括三个方面(严格按照此顺序撰写...对于一些关键位置代码逻辑,或者局部较为复杂逻辑,需要有相应逻辑说明,方便其他开发者阅读该段代码,实例如下: // 从 Redis 中批量读取属性,对于没有读取 id , 记录到一个数组里面,...// 从 Redis 中批量读取属性,对于没有读取 id , 记录到一个数组里面,准备从 DB 中读取 上面 Redis 、 id 、 DB 和其他中文字符之间都是用了空格分隔。

53420

Go 包概念及其机制详解&内置工具使用简介 【Go语言圣经笔记】

包和工具 现在随便一个小程序实现都可能包含超过10000个函数。然而作者一般只需要考虑其中很小一部分和做很少设计,因为绝大部分代码都是由他人编写,它们通过类似包或模块方式被重用。...标准库image图像包包含了一个Decode函数,用于从io.Reader接口读取数据并解码图像,它调用底层注册图像解码器来完成任务,然后返回image.Image类型图像。...,主程序只需要匿名导入特定图像驱动包就可以用image.Decode解码对应格式图像了(笔者注:原因是导入包过程会按表达式初始化包级变量(本例没有体现)并且执行init函数(如果有的话))。...go get命令获取代码是真实本地存储仓库,而不仅仅只是复制源文件,因此你依然可以使用版本管理工具比较本地代码变更或者切换到其它版本。...如果不包含该标志参数的话,而且如果包已经在本地存在,那么代码不会被自动更新。

1.6K30

匿名函数定义函数_c语言最先执行函数

大家好,又见面了,是你们朋友全栈君。...alert(x+y) } add(1,2) //弹窗显示:3 复制代码 关于函数声明,它最重要一个特征就是函数声明提升,意思是执行代码之前先读取函数声明。...} 造成这种现象是因为解析器在向执行环境中加载数据时,解析器会率先读取函数声明,并使其在执行任何代码前可用;至于函数表达式,则必须等到解析器执行到它所在代码行,才会真正被解析。...我们创建了一个匿名函数,并立即执行它,由于外部无法引用它内部变量,因此在执行完后很快就会被释放,关键是这种机制不会污染全局对象。...文中若有写不对或需要改进或者有不同简介欢迎回复一起探讨。

98620

【Linux】 管道扩展 — 开始使用命名管道

根据匿名管道底层,两个毫不相干进程就无法通过匿名管道方式来进行通信! 那么两个毫不相干进程如何才能看同一片内存,才能共享一个文件缓冲区呢?当然就通过文件路径(唯一性)来打开!...2 代码实现 2.1 系统调用 匿名管道创建是通过系统调用:pipe(int pipefd[2]) 来建立,同样命名管道创建也有对应指令:mkfifo MKFIFO(1)...这是因为当读端退出了,操作系统会自动释放写端进程,操作系统不会做无用功(不会在一个没有读取管道文件了一直写入) 当然这样通信也就只能用来演示,我们先要通过命名管道来使我们创建两个毫不相干进程完成通信工作...通过这些可以先搭建一个基础类,可以创建管道文件!...,我们在写一下相应函数读取 ReadNamedPipe(std::string *out) 设置缓冲区 从管道里读取 向缓冲区写入数据 命名管道对于读端而言 , 如果我们打开文件,但是写端还没有

6610

Linux进程间通信【匿名管道】

父进程需要以读写方式打开匿名管道 pipe,这样子进程在继承时,才不会发生权限丢失 创建出匿名管道文件 pipe 虽然属于文件系统,但它是一个特殊文件,一个由 OS 提供纯纯内存文件,不需要将数据冲刷至磁盘中...关于返回值:创建匿名管道成功,返回 0,失败返回 -1,并设置错误码 实际在使用此函数时,需要先创建好大小为 2 pipefd 数组,然后将其传入函数,成功创建匿名管道后,pipefd 数组中存储就是...匿名管道读端和写端 fd 4.2、实例代码演示 下面通过一个简单程序,演示 匿名管道函数 pipe 使用 使用匿名管道步骤 创建匿名管道 创建子进程 关闭不需要 fd 开始通信 #include...fd,确保 单流向 原则 注:命名管道可以支持不具有血缘关系进程间通信 关于匿名管道还有一个函数:pipe2 (了解),比 pipe 函数多一个参数2 flags,可以使匿名管道在发生特殊情况时,..." << endl; } 结果:在一段时间后,管道被写满,写端无法写入数据,进入阻塞状态 只有当读端尝试将管道中数据读走一部分后,写端才能继续写入 形象化理解 管道为空:垃圾桶为空时,你不会去倒垃圾

22420

Python函数基础

return None,即函数默认返回None结构 如果函数体body语句只有一行,或者可以简写为一行,则可以写在def同行。...而函数是一种代码块,代码块是一个解释单元,是一个整体。在代码块范围内不会忘记读取行,也不会读一行就立即解释一行,而是读取完所有代码块内行,然后统筹安排地进行解释。...当python读取到def所在行时候,知道这是一个函数声明语句,它有一个属于自己代码块范围,于是会读完整个代码块,然后解释这个代码块。...换句话说,在def声明函数过程中,在函数被调用之前,函数所记录变量一直都是变量地址,或者通俗一点理解为记录变量名称,而不会进行变量赋值替换。 实际上,变量明确值会当作常量被记录起来。...在python中使用lambda关键字声明匿名函数,python中lambda是一个表达式而不是一个语句,这意味着某些语句环境下可能无法使用def声明函数,但却可以使用lambda声明匿名函数

51410

实效go编程--1

行注释更为常用,而块注释则主要用作包注释,当然也可在禁用一大段代码时使用。 godoc 既是一个程序,又是一个Web服务器,它对Go源码进行处理,并提取包中文档内容。...生成输出甚至可能无法以等宽字体显示, 因此不要依赖于空格对齐,godoc 会像 gofmt 那样处理好这一切。...注释是不会被解析纯文本,因此像HTML或其它类似于 _这样_ 东西将按照 原样 输出,因此不应使用它们。godoc 所做调整, 就是将已缩进文本以等宽字体显示,来适应对应程序片段。...假如你记不住“Compile”这个名称,而又在找正则表达式解析函数, 那就可以运行 $ godoc regexp | grep parse 若包中所有文档注释都以“此函数…”开头,grep 就无法帮你记住此名称...简短声明能让我们更容易在循环中声明下标变量: sum := 0 for i := 0; i < 10; i++ { sum += i } 若你想遍历数组、切片、字符串或者映射,或从信道中读取消息

1.1K90
领券