Go-Advance 总结

看完了 go-advice, 记录下一些要点和自己值得注意的地方。

range 数组和切片的差异

Go 语言的 range 表达式遵循如下两个规则: range表达式只会在for语句开始执行时被求值一次,无论后边会有多少次迭代 range表达式的求值结果会被复制,也就是说,被迭代的对象是range表达式结果值的副本而不是原值

多个goroutine按既定顺序运行

Golang 中 goroutine 中的运行是无序的,如果要让多个 goroutine 顺序执行,例如每个 goroutine 在并行执行时顺序打印 0-9,这里记录一种通过 atomic 包的原子操作来实现的方法。

别名和类型再定义

Golang 语言中,我们可以用关键字type声明自定义的各种类型。在使用type时,声明的自定义类型有不同的区别。

map中值类型结构体无法赋值

在Golang中,当一个map的value为一个值类型的结构体时,是不能对其赋值的,修改结构体的数值的。

Go 基础知识点

已经专职做了很久的 Python 开发,不过心中对当初带我入行 C 也一直有些留恋。Go 语言的设计和定位和 C 语言有很多共同之处,也融入了很多现代的设计理念,写起来很有当初写 C 的亲切感。准备好好学习下这门语言,这里记录下一些个人觉得重要的基础知识点,随着不断深入再补充。