6.824
auggie

go

课程指南

课表

资源文件

golang 入门

Go是一门编译型语言,Go语言的工具链将源代码及其依赖转换成计算机的机器指令。

go run [file …]

go build [file …]

go env

golang 的代码通过包组织,一个包由位于同一个目录下的 1-n 个 .go 源代码程序组成。

go 源代码的组成:

  • 每个源文件都以一条package声明语句开始
  • 紧跟着一系列导入(import)的包
  • 之后是存储在这个文件里的程序语句

main包比较特殊。它定义了一个独立可执行的程序,而不是一个库。在main里的main 函数 也很特殊,它是整个程序执行时的入口。

  • go 语言不允许使用无用的局部变量,会导致编译错误
    • 空标识符_可用于在任何语法需要变量名但程序逻辑不需要的时候,丢弃不需要的循环索引,并保留元素值。
  • go 语言不能导入无关的包,会导致编译错误,gofmt可以在保存文件的时候自动去除没有使用到的包

函数

  • 具名函数

  • 匿名函数

    1
    2
    3
    boo := func(a, b int) (int, int) {
    return b, a
    }
  • 闭包

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    func gen() func() int {
    a := 1
    return func() int {
    a++
    return a
    }
    }

    func main() {
    boo, bar := gen(), gen()
    fmt.Println(boo(), boo(), bar(), bar())
    }
    // 2 3 2 3

    将 a 变量封装在匿名函数的作用域之内.

  • defer 关键字

    在程序结束的时候,完成一些必要的操作

练手项目