花了近一周时间,把golang基本语法看了两遍。使用了两个资料:
- 「学习 Go 语言」,邢星翻译版。GitHub地址,PDF版。资料比较精要,非常适合短时间入门。每个章节后的习题设计不错,考察知识点比较充分和全面,但是经常出现「越级」现象,即第x章的内容习题,往往需要你学习了第x+1,x+2章后的内容以后才能完成。
- 「Go语言程序设计」,Mark Summerfield. 虽然是七牛许式伟翻译,但是还是比较粗糙,逻辑错误和排版错误比较多,有人评价说这是许的一本黑书,姑且批判性的看吧。这本书每章的例子分量很重,值得花时间研读以及抄一下代码。
以上是题外话。我接下来的工作会逐步转向golang的服务器维护和开发。因此,除去语言本身,对design pattern是下一阶段要着重学习的。找到一个这方面的资料资料:Golang server design pattern,阅读笔记如下:
- golang采用CSP(Communication Sequential Processing)实现并行,类似于Unix管道的概念,但是golang中,CSP是双向的,管道是单向的。由于没有共享资源,因此程序员可以避免显式加锁。
- 收/发chan的本质是带锁的FIFO操作。
- 从C++观点来开,
- golang的一个目录就是一个namespace/class。同一目录中的所有文件中的变量、函数,相互可见。
- C++继承 => golang嵌入
- 类方法 => 接收者
- 构造方法 => init()或者New()接口方法。golang中,一个目录/一个文件中可以有若干个init函数。
- void*/object => interface{}
- try()/catch() => panic()/recover()
- go项目组织原则:
- 一个目录下的所有.go文件爱你共同构成一个功能模块,为一个目的服务。
- 用层次话的方式组织工程。
- 尽可能多的使用goroutine处理并行,goroutine是很廉价的。
- 用 模块+接口 的方式构建项目,二不是OOP的方式。