Golang,开车上路。
2017年1月29日,开始学习 golang, 一边学习一边做笔记。
◆ Golang 的开发环境非常容易搭建,双击安装包安装后,设置一个系统变量即可。
安装 go 1.8 以上版本,则连这个系统变量也不用设置,默认 %USERPROFILE%\go 为 workspace, 因此,只要在 %USERPROFILE% 里新建文件夹 go/src 即可。
◆ 利用当前时间来做随机数的种子。
◆ 教程里说:
A
nil
map has no keys, nor can keys be added.
但是没有给出具体的例子,于是我做了以下试验:
var m map[string]int // 构建一个空map m["abc"] = 123 // 对空map添加key fmt.Println(m)
结果,果然运行出错 panic: assignment to entry in nil map
这里 https://blog.golang.org/go-maps-in-action 有更详细的说明。
◆ 把 byte 转换为 string
正确的方法是先把 byte 转换为 int, 再使用 strconv.Itoa 函数。
一开始我尝试使用 string(int) 来转换,但是不对,没想到这样做其实是把 code points 转换为 Unicode 字符,详细说明参阅:https://golang.org/ref/spec#Conversions
◆ A Tour of Go, Exercise: Readers
在官方答案里,是这样定义这个method的:
func (r MyReader) Read(b []byte) (int, error)
但是我发现变量 r 根本没有被调用,尝试不要这个变量,即:
func (MyReader) Read(b []byte) (int, error)
果然,这样也是可以的。
◆ goland 的语法比较严格,如下面这个例子所示, struct 的最后一个元素与大括号之间如果有换行,则需要逗号,否则编译出错。不换行则不需要逗号。
◆ 声明时自动计算 array 长度
a := [...]string{"Penn", "Teller"} // len(a) is 2
(本文档随着我一边学习一边更新)