注意,要将项目 zz (文件夹)放在GOPATH指定的某个目录的src下。如GOPATH为:GOPATH="/root/go:/data/code"
则可以将目录 zz 放到 /data/code/src下面!!
b.go
b_test.go
----------------------------
Go语言项目十分重视代码的文档,在软件设计中,文档对于软件的可维护和易使用具有重大的影响。因此,文档必须是书写良好并准确的,与此同时它还需要易于书写和维护。
Go语言注释
Go语言中注释一般分为两种,分别是单行注释和多行注释
///**/
packagepackagepackage
go docgodoc
go doc
go doc
Go语言程序实体是指变量、常量、函数、结构体以及接口。
程序实体标识符就是程序实体的名称。
go doc 用法
go doc [-u] [-c] [package|[package.]symbol[.methodOrField]]
可用的标识:
示例
输出指定 package ,指定类型,指定方法的注释
$ go doc sync.WaitGroup.Add
输出指定 package ,指定类型的所有程序实体,包括未导出的
$ go doc -u -all sync.WaitGroup
输出指定 package 的所有程序实体(非所有详细注释)
$ go doc -u sync
godoc
godoc
go 1.12godocgo get
go get -u -v golang.org/x/tools/cmd/godoc
国内的安装方法
-
mkdir -p $GOPATH/src/golang.org/x
-
cd $GOPATH/src/golang.org/x
-
git clone https://github.com/golang/tools.git
-
cd tools/cmd/godoc
-
go install
-
ls -alh $GOPATH/bin
通过终端查看文档
-
go doc命令
-
$ go doc help
-
usage: go doc [-u] [-c] [package|[package.]symbol[.method]]
-
-
查看系统log包信息
-
linux@ubuntu:/usr/local/go/src/log$ go doc
-
package log // import "log"
-
-
Package log implements a simple logging package. It defines a type, Logger,
-
with methods for formatting output. It also has a predefined 'standard'
-
Logger accessible through helper functions Print[f|ln], Fatal[f|ln], and
-
Panic[f|ln], which are easier to use than creating a Logger manually. That
-
logger writes to standard error and prints the date and time of each logged
-
message. Every log message is output on a separate line: if the message
-
being printed does not end in a newline, the logger will add one. The Fatal
-
functions call os.Exit(1) after writing the log message. The Panic functions
-
call panic after writing the log message.
-
-
const Ldate = 1 << iota ...
-
func Fatal(v ...interface{})
-
func Fatalf(format string, v ...interface{})
-
func Fatalln(v ...interface{})
-
func Flags() int
-
func Output(calldepth int, s string) error
-
func Panic(v ...interface{})
-
func Panicf(format string, v ...interface{})
-
func Panicln(v ...interface{})
-
func Prefix() string
-
func Print(v ...interface{})
-
func Printf(format string, v ...interface{})
-
func Println(v ...interface{})
-
func SetFlags(flag int)
-
func SetOutput(w io.Writer)
-
func SetPrefix(prefix string)
-
type Logger struct{ ... }
-
func New(out io.Writer, prefix string, flag int) *Logger
-
-
查看系统log包中Fatal方法
-
linux@ubuntu:/usr/local/go/src/log$ go doc log.Fatal
-
func Fatal(v ...interface{})
-
Fatal is equivalent to Print() followed by a call to os.Exit(1).
-
-
查看系统log包中Logger结构
-
linux@ubuntu:/usr/local/go/src/log$ go doc Logger
-
type Logger struct {
-
// Has unexported fields.
-
}
-
A Logger represents an active logging object that generates lines of output
-
to an io.Writer. Each logging operation makes a single call to the Writer's
-
Write method. A Logger can be used simultaneously from multiple goroutines;
-
it guarantees to serialize access to the Writer.
-
-
-
func New(out io.Writer, prefix string, flag int) *Logger
-
func (l *Logger) Fatal(v ...interface{})
-
func (l *Logger) Fatalf(format string, v ...interface{})
-
func (l *Logger) Fatalln(v ...interface{})
-
func (l *Logger) Flags() int
-
func (l *Logger) Output(calldepth int, s string) error
-
func (l *Logger) Panic(v ...interface{})
-
func (l *Logger) Panicf(format string, v ...interface{})
-
func (l *Logger) Panicln(v ...interface{})
-
func (l *Logger) Prefix() string
-
func (l *Logger) Print(v ...interface{})
-
func (l *Logger) Printf(format string, v ...interface{})
-
func (l *Logger) Println(v ...interface{})
-
func (l *Logger) SetFlags(flag int)
-
func (l *Logger) SetOutput(w io.Writer)
-
func (l *Logger) SetPrefix(prefix string)
列出Logger结构定义以及Logger结构操作的方法集
-
通过网页查看文档
$ godoc -http=:6060
编写自己的文档
-
1、设计接口函数代码
创建documents/calc.go文件
-
/*
-
简易计算器计算自定义包
-
*/
-
package documents
-
-
// 一种实现两个整数相加的函数,
-
// 返回值为两整数相加之和
-
func Add(a, b int) int {
-
return a + b
-
}
-
-
// 一种实现两个整数相减的函数,
-
// 返回值为两整数相减之差
-
func Sub(a, b int) int {
-
return a - b
-
}
-
-
// 一种实现两个整数相乘的函数,
-
// 返回值为两整数相乘之积
-
func Mul(a, b int) int {
-
return a * b
-
}
-
-
// 一种实现两个整数相除的函数,
-
// 返回值为两整数相除之商
-
func Div(a, b int) int {
-
if b == 0 {
-
panic("divide by zero")
-
}
-
-
return a / b
-
}
-
-
2、设计Example示例代码
创建documents/calc_test.go文件,给calc.go中每个函数编写Example函数
-
package documents
-
-
import (
-
"fmt"
-
)
-
-
func ExampleAdd() {
-
result := Add(4, 2)
-
fmt.Println("4 + 2 =", result)
-
-
// Output:
-
// 4 + 2 = 6
-
}
-
-
func ExampleSub() {
-
result := Sub(4, 2)
-
fmt.Println("4 - 2 =", result)
-
-
// Output:
-
// 4 - 2 = 2
-
}
-
-
func ExampleMul() {
-
result := Mul(4, 2)
-
fmt.Println("4 * 2 =", result)
-
-
// Output:
-
// 4 * 2 = 8
-
}
-
-
func ExampleDiv() {
-
result := Div(4,2)
-
fmt.Println("4 / 2 =", result)
-
-
// Output:
-
// 4 / 2 = 2
-
}
-
-
3、网页查看文档
注意以上两个文件必须在$GOPATH/src路径下,使用godoc命令创建文档,用网页打开显示如下
编写文档规则
1、文档中显示的详细主体内容,大多是由用户注释部分提供,注释的方式有两种,单行注释"//"和代码块"/* */"注释。
packagepackage
3、在函数、结构、变量等前做注释的,在文档中看到的就是该项详细描述。注释规则同上。
ExampleExample