第 2 章 程序结构

《Go 程序设计语言》学习笔记目录

笔记来源:《Go 程序设计语言》ISBN:9787111558422 作者:Alan Donovan, Brianv Kernighan

2.1 名称

名称的作用域越大,就使用越长且更有意义的名称。

2.3.1 短变量声明

  • := 表示声明
  • = 表示赋值
1
i, j = j, i // 交换 i 和 j 的值

2.3.3 new 函数

表达式 new(T)

  • 创建一个未命名的 T 类型变量
  • 初始化为 T 类型的零值
  • 并返回其地址 *T

下面两个函数功能一样

1
2
3
func newInt() *int {
    return new(int)
}
1
2
3
4
func newInt() *int {
    var dummy int
    return &dummy
}

2.4.1 多重赋值

计算裴波纳契数列

1
2
3
4
5
6
7
func fib(n int) int {
    x, y := 0, 1
    for i := 0; i < n; i++ {
        x, y = y, x+y
    }
    return x
}

2.6.2 包初始化

任何文件可以包含任意数量的初始化函数

1
func init() { ... }

这个 init 函数

  • 不能被调用和被引用
  • 它也是普通的函数
  • 在每一个文件里,当程序启动的时候,init 函数安装它们声明的顺序自动执行

包的初始化按照在程序中导入的顺序来进行,依赖顺序优先,每次初始化一个包