My learning notes and practices for Go
language.
Golang
不愧是现代的C
语言, 系统的学习下来, 真是足够简洁, 而又灵活且强大, 为服务器应用而生. 迫不及待想用它开发点什么了!!
- 罗列几项我认为的关键特性如下:
- 编译型语言, 仅支持静态链接于是可以run everywhere; 编译过程要么
error
要么pass
, 于是终于不用再纠结warning
到底要不要解决的问题. - 没有
class
与继承等概念, 面向对象特性都通过method
和interface
来实现(封装通过命名的大小写来实现).method
绑定到类型仅仅是简单的定义一个属于类型的函数即可, 非常方便扩展.- 这一点感觉就是在怼
C++/Java
中的过度抽象, 最终目的是为了更好更方便的解决问题, 一切皆对象未必是最好的solution.
- 这一点感觉就是在怼
- 简洁又强大的
goroutine/channel
! - 完善的
profile
工具, 包括对cpu
,memory
,block
的profile
, 以及race detector
工具. 性能分析不再是问题! - 极简的
test
框架
- 编译型语言, 仅支持静态链接于是可以run everywhere; 编译过程要么
- 个人不太喜欢的特性:
- 固定的
workspace
结构: 一台机器上同时还不能有2个workspace
了?- 补充说明, 从
GO 1.11
开始已经支持了Go Modules以用于管理依赖. 于是虽然workspace
的固定结构依然存在, 但至少不再需要强制所有的代码固定在workspace
目录结构中, 方便了依赖管理的同时, 也增加了易用性. - Go Modules 的一些参考资料:
- 补充说明, 从
- 固定的
- Reading bookThe Go Programming Language.
- See details in: (Chinese)我的Golang学习笔记及GOPL示例实验代码
- Reading Effective Go
- See details in: (Chinese)我的"Effective Go"学习笔记