雨痕 Go语言学习笔记-工作空间

工作空间

  1. 可在 GOPATH 环境变量列表中添加多个⼯作空间,但不能和 GOROOT 相同
  2. 通常 go get 使⽤第⼀个⼯作空间保存下载的第三⽅库

源文件

  1. 注释:⽀持 "//"、 "/**/" 两种注释⽅式,不能嵌套
  2. 命名:采⽤ camelCasing ⻛格,不建议使⽤下划线

包结构

  1. 目录名最好不⽤ main、 all、 std 这三个保留名称
  2. 可执⾏⽂件必须包含 package main,⼊⼝函数 main
  3. 要获取正确的可执⾏⽂件路径,可⽤filepath.Abs(exec.LookPath(os.Args[0]))
  4. ⾸字⺟⼤⼩写决定访问权限(该规则适⽤于全局变量、全局常量、类型、结构字段、函数、⽅法等)
    • public: ⾸字⺟⼤写,可被包外访问
    • internal: ⾸字⺟⼩写,仅包内成员可以访问

包导入

  1. import "相对⺫录/包主⽂件名"
  2. 相对⺫录是指从 /pkg/<os_arch> 开始的⼦目录(我一直以为是src目录
import "fmt" -> /usr/local/go/pkg/darwin_amd64/fmt.a
import "os/exec" -> /usr/local/go/pkg/darwin_amd64/os/exec.a
  1. 在导⼊时,可指定包成员访问⽅式。⽐如对包重命名,以避免同名冲突(3.4重要)
import "yuhen/test" // 默认模式: test.A
import M "yuhen/test" // 包重命名: M.A
import . "yuhen/test" // 简便模式: A,不推荐使用
import _ "yuhen/test" // ⾮导⼊模式: 仅让该包执⾏初始化函数

初始化

  1. 每个源⽂件都可以定义⼀个或多个初始化函数。

    • 编译器不保证多个初始化函数执⾏次序。

    Go 学习笔记, 第 4 版

    79

    • 初始化函数在单⼀线程被调⽤,仅执⾏⼀次。

    • 初始化函数在包所有全局变量初始化后执⾏。

    • 在所有初始化函数结束后才执⾏ main.main。

    • ⽆法调⽤初始化函数。

文档

  1. 建议⽤专⻔的 doc.go 保存 package 帮助信息
  2. 包⽂档第⼀整句 (中英⽂句号结束) 被当做 packages 列表说明

总结

  1. 文档中要注意Example的格式
  2. godoc -http="8080" 启动本地文档服务器
comments powered by Disqus