mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-11 23:08:34 +08:00
修正一些小错误和语言不通顺的地方 (#274)
* Update 07.3.md * Update 07.3.md * Update 07.6.md * fix few problems
This commit is contained in:
@@ -72,9 +72,9 @@ map 的初始化:`var map1[keytype]valuetype = make(map[keytype]valuetype)`。
|
||||
|
||||
或者简写为:`map1 := make(map[keytype]valuetype)`。
|
||||
|
||||
上面例子中的 mapCreated 就是用这种方式创建的:`mapCreated := make(map[string]float)`。
|
||||
上面例子中的 mapCreated 就是用这种方式创建的:`mapCreated := make(map[string]float32)`。
|
||||
|
||||
相当于:`mapCreated := map[string]float{}`。
|
||||
相当于:`mapCreated := map[string]float32{}`。
|
||||
|
||||
mapAssigned 也是 mapList 的引用,对 mapAssigned 的修改也会影响到 mapLit 的值。
|
||||
|
||||
@@ -83,12 +83,12 @@ mapAssigned 也是 mapList 的引用,对 mapAssigned 的修改也会影响到
|
||||
**注意** 如果你错误的使用 new() 分配了一个引用对象,你会获得一个空引用的指针,相当于声明了一个未初始化的变量并且取了它的地址:
|
||||
|
||||
```go
|
||||
mapCreated := new(map[string]float)
|
||||
mapCreated := new(map[string]float32)
|
||||
```
|
||||
|
||||
接下来当我们调用:`mapCreated["key1"] = 4.5` 的时候,编译器会报错:
|
||||
|
||||
invalid operation: mapCreated["key1"] (index of type *map[string]float).
|
||||
invalid operation: mapCreated["key1"] (index of type *map[string]float32).
|
||||
|
||||
为了说明值可以是任意类型的,这里给出了一个使用 `func() int` 作为值的 map:
|
||||
|
||||
@@ -115,7 +115,7 @@ func main() {
|
||||
和数组不同,map 可以根据新增的 key-value 对动态的伸缩,因此它不存在固定长度或者最大限制。但是你也可以选择标明 map 的初始容量 `capacity`,就像这样:`make(map[keytype]valuetype, cap)`。例如:
|
||||
|
||||
```go
|
||||
map2 := make(map[string]float, 100)
|
||||
map2 := make(map[string]float32, 100)
|
||||
```
|
||||
|
||||
当 map 增长到容量上限的时候,如果再增加新的 key-value 对,map 的大小会自动加 1。所以出于性能的考虑,对于大的 map 或者会快速扩张的 map,即使只是大概知道容量,也最好先标明。
|
||||
|
@@ -118,7 +118,7 @@ init 函数是不能被调用的。
|
||||
|
||||
**编译并安装一个包(参见第 9.7 节):**
|
||||
|
||||
在 Linux/OS X 下可以用类似第 4.3 节的 Makefile 脚本做到这一点:
|
||||
在 Linux/OS X 下可以用类似第 3.9 节的 Makefile 脚本做到这一点:
|
||||
|
||||
include $(GOROOT)/src/Make.inc
|
||||
TARG=pack1
|
||||
@@ -127,7 +127,7 @@ init 函数是不能被调用的。
|
||||
pack1b.go\
|
||||
include $(GOROOT)/src/Make.pkg
|
||||
|
||||
确保的它可执行性通过 `chmod 777 ./Makefile`。
|
||||
通过 `chmod 777 ./Makefile`确保它的可执行性。
|
||||
|
||||
上面脚本内的include语引入了相应的功能,将自动检测机器的架构并调用正确的编译器和链接器。
|
||||
|
||||
|
@@ -4,7 +4,7 @@ godoc工具(第 3.6 节)在显示自定义包中的注释也有很好的效
|
||||
|
||||
例如:
|
||||
|
||||
- 在 do_examples 目录下我们有第 11.7 节中的用来排序的 go 文件,文件中有一些注释(文件需要未编译)
|
||||
- 在 doc_examples 目录下我们有第 11.7 节中的用来排序的 go 文件,文件中有一些注释(文件需要未编译)
|
||||
- 命令行下进入目录下并输入命令:
|
||||
|
||||
godoc -http =:6060 -goroot="."
|
||||
|
@@ -66,12 +66,12 @@ func TestUC(t *testing.T) {
|
||||
}
|
||||
```
|
||||
|
||||
通过指令编译并安装包到本地:`go install src/uc`, 这会将 uc.a 复制到 pkg/linux_amd64 下面。
|
||||
通过指令编译并安装包到本地:`go install uc`, 这会将 uc.a 复制到 pkg/linux_amd64 下面。
|
||||
|
||||
另外,使用 make,通过以下内容创建一个包的 Makefile(1) 在 src/uc 目录下:
|
||||
另外,使用 make ,通过以下内容创建一个包的 Makefile(1) 在 src/uc 目录下:
|
||||
|
||||
```
|
||||
include $GOROOT/src/Make.inc
|
||||
include $(GOROOT)/src/Make.inc
|
||||
|
||||
TARG=uc
|
||||
GOFILES=\
|
||||
@@ -114,12 +114,12 @@ func main() {
|
||||
另外复制 uc.a 到 uc 目录并创建一个 Makefile(2) 并写入文本:
|
||||
|
||||
```
|
||||
include $GOROOT/src/Make.inc
|
||||
include $(GOROOT)/src/Make.inc
|
||||
TARG=ucmain
|
||||
GOFILES=\
|
||||
ucmain.go\
|
||||
|
||||
include $GOROOT/src/Make.cmd
|
||||
include $(GOROOT)/src/Make.cmd
|
||||
```
|
||||
|
||||
执行 gomake 编译 `ucmain.go` 成可执行文件ucmain
|
||||
|
@@ -38,7 +38,7 @@ git push -u origin master
|
||||
|
||||
也可以将其缩写为:`import uc "github.com/NNNN/uc"`。
|
||||
|
||||
然修改 Makefile: 将 `TARG=uc` 替换为 `TARG-github.com/NNNN/uc`。
|
||||
然后修改 Makefile: 将 `TARG=uc` 替换为 `TARG-github.com/NNNN/uc`。
|
||||
|
||||
Gomake(和 go install)将通过 `$GOPATH` 下的本地版本进行工作。
|
||||
|
||||
@@ -49,7 +49,7 @@ Gomake(和 go install)将通过 `$GOPATH` 下的本地版本进行工作。
|
||||
- Google Code(hg/Git/svn)
|
||||
- Launchpad(bzr)
|
||||
|
||||
版本控制系统可以选择你熟悉的或者本地使用的代码版本控制。Go 核心代码的仓库是使用 Mercurial(hg) 来控制的,所以它是一个最可能保证你可以得到开发者项目中最好的软件。Git 也很出名,同样也适用。如果你从未使用过的版本控制,这些网站有一些很好的帮助并且你可以通过在谷歌搜索 "{name} tutorial",其中 name 为你想要使用的版本控制系统得到许多很好的教程。
|
||||
版本控制系统可以选择你熟悉的或者本地使用的代码版本控制。Go 核心代码的仓库是使用 Mercurial(hg) 来控制的,所以它是一个最可能保证你可以得到开发者项目中最好的软件。Git 也很出名,同样也适用。如果你从未使用过版本控制,这些网站有一些很好的帮助并且你可以通过在谷歌搜索 "{name} tutorial",其中 name 为你想要使用的版本控制系统得到许多很好的教程。
|
||||
|
||||
## 链接
|
||||
|
||||
|
Reference in New Issue
Block a user