基础概念
设计哲学
- 简单是指 Go 语言特性始终保持在少且足够的水平,不走语言特性融合的道路,但又不乏生 产力。简单是 Go 生产力的源泉,也是 Go 对开发者的最大吸引力;
- 显式是指任何代码行为都需开发者明确知晓,不存在因“暗箱操作”而导致可维护性降低和不 安全的结果;
- 组合是构建 Go 程序骨架的主要方式,它可以大幅降低程序元素间的耦合,提高程序的可扩 展性和灵活性;
- 并发是 Go 敏锐地把握了 CPU 向多核方向发展这一趋势的结果,可以让开发人员在多核时 代更容易写出充分利用系统资源、支持性能随 CPU 核数增加而自然提升的应用程序;
- 面向工程是 Go 语言在语言设计上的一个重大创新,它将语言要解决的问题域扩展到那些原 本并不是由编程语言去解决的领域,从而覆盖了更多开发者在开发过程遇到的“痛点”,为开 发者提供了更好的使用体验。
Go Runtime
Runtime 负责实现 Go 的垃圾收集、并发、内存堆栈管理等功能,会和客户代码一同编译并链接到目标程序中。
标准布局
1
2
3
4
5
6
7
|
single-exe-layout
├── go.mod
├── internal/
├── main.go
├── pkg1/
├── pkg2/
└── vendor/
|
初始化次序
- 依赖包按“深度优先”的次序进行初始化;
- 每个包内按以“常量 -> 变量 -> init 函数”的顺序进行初始化;
- 包内的多个 init 函数按出现次序进行自动调用。
常用命令
1
2
3
4
|
# 查询目标包版本
go list -m -versions github.com/sirupsen/logrus
# 下载目标版本 (gopath)
go get github.com/sirupsen/[email protected]
|
References