@@ -53,7 +53,7 @@
|
||||
- `-installsuffix suffix` 为了和默认的安装包区别开来,采用这个前缀来重新安装那些依赖的包,`-race`的时候默认已经是`-installsuffix race`,大家可以通过`-n`命令来验证
|
||||
- `-ldflags 'flag list'` 传递参数给5l, 6l, 8l 调用
|
||||
- `-tags 'tag list'` 设置在编译的时候可以适配的那些tag,详细的tag限制参考里面的 [Build Constraints](http://golang.org/pkg/go/build/)
|
||||
|
||||
|
||||
## go clean
|
||||
|
||||
这个命令是用来移除当前源码包和关联源码包里面编译生成的文件。这些文件包括
|
||||
@@ -158,7 +158,7 @@ gofmt的参数介绍
|
||||
这里我们来举一个简单的例子,例如我们经常会使用`yacc`来生成代码,那么我们常用这样的命令:
|
||||
|
||||
go tool yacc -o gopher.go -p parser gopher.y
|
||||
|
||||
|
||||
-o 指定了输出的文件名, -p指定了package的名称,这是一个单独的命令,如果我们想让`go generate`来触发这个命令,那么就可以在当然目录的任意一个`xxx.go`文件里面的任意位置增加一行如下的注释:
|
||||
|
||||
//go:generate go tool yacc -o gopher.go -p parser gopher.y
|
||||
@@ -173,8 +173,8 @@ gofmt的参数介绍
|
||||
|
||||
|
||||
## godoc
|
||||
|
||||
在Go1.2版本之前还支持`go doc`命令,但是之后全部已到了godoc这个命令下,需要这样安装`go get golang.org/x/tools/cmd/godoc`
|
||||
|
||||
在Go1.2版本之前还支持`go doc`命令,但是之后全部移到了godoc这个命令下,需要这样安装`go get golang.org/x/tools/cmd/godoc`
|
||||
|
||||
很多人说go不需要任何的第三方文档,例如chm手册之类的(其实我已经做了一个了,[chm手册](https://github.com/astaxie/godoc)),因为它内部就有一个很强大的文档工具。
|
||||
|
||||
|
||||
16
zh/02.2.md
16
zh/02.2.md
@@ -169,7 +169,7 @@ Go中可以使用`+`操作符来连接两个字符串:
|
||||
world`
|
||||
|
||||
`` ` `` 括起的字符串为Raw字符串,即字符串在代码中的形式就是打印时的形式,它没有字符转义,换行也将原样输出。例如本例中会输出:
|
||||
|
||||
|
||||
hello
|
||||
world
|
||||
|
||||
@@ -239,11 +239,11 @@ Go里面有一个关键字`iota`,这个关键字用来声明`enum`的时候采
|
||||
)
|
||||
|
||||
const v = iota // 每遇到一个const关键字,iota就会重置,此时v == 0
|
||||
|
||||
const (
|
||||
|
||||
const (
|
||||
e, f, g = iota, iota, iota //e=0,f=0,g=0 iota在同一行值相同
|
||||
)
|
||||
|
||||
|
||||
const (
|
||||
a = iota a=0
|
||||
b = "B"
|
||||
@@ -252,11 +252,11 @@ Go里面有一个关键字`iota`,这个关键字用来声明`enum`的时候采
|
||||
g //g = 4
|
||||
)
|
||||
|
||||
>除非被显式设置为其它值或`iota`,每个`const`分组的第一个常量被默认设置为它的0值,第二及后续的常量被默认设置为它前面那个常量的值,如果前面那个常量的值是`iota`,则它也被设置为`iota`。
|
||||
>除非被显式设置为其它值或`iota`,每个`const`分组的第一个常量被默认设置为它的0值,第二及后续的常量被默认设置为它前面那个常量的值,如果前面那个常量的值是`iota`,则它也被设置为`iota`。
|
||||
|
||||
### Go程序设计的一些规则
|
||||
Go之所以会那么简洁,是因为它有一些默认的行为:
|
||||
- 大写字母开头的变量是可导出的,也就是其它包可以读取的,是公用变量;小写字母开头的就是不可导出的,是私有变量。
|
||||
- 大写字母开头的变量是可导出的,也就是其它包可以读取的,是公有变量;小写字母开头的就是不可导出的,是私有变量。
|
||||
- 大写字母开头的函数也是一样,相当于`class`中的带`public`关键词的公有函数;小写字母开头的就是有`private`关键词的私有函数。
|
||||
|
||||
## array、slice、map
|
||||
@@ -395,7 +395,7 @@ slice有一些简便的操作
|
||||
这个例子里面slice的容量是8,新版本里面可以指定这个容量
|
||||
|
||||
slice = array[2:4:7]
|
||||
|
||||
|
||||
上面这个的容量就是`7-2`,即5。这样这个产生的新的slice就没办法访问最后的三个元素。
|
||||
|
||||
如果slice是这样的形式`array[:i:j]`,即第一个参数为空,默认值就是0。
|
||||
@@ -490,5 +490,3 @@ slice有一些简便的操作
|
||||
* [目录](<preface.md>)
|
||||
* 上一章: [你好,Go](<02.1.md>)
|
||||
* 下一节: [流程和函数](<02.3.md>)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user