...menustart
- 包
...menuend
每个workspace 必须由 bin,pkg,src 三个目录组成
|____bin
| |____blessing
|____pkg
| |____darwin_amd64
| |____c1mHTTPServer.a
| |____tools.a
|____src
|____blessing
|____main.go
export GOPATH=$HOME/projects/golib:$HOME/projects/go
public: 首字母大写,可被包外访问
internal: 首字母小写,仅包内成员可以访问
import "相对目录/包主文件名"
根目录是指 从 `<workspace>/pkg/<os_arch>` 开始的子目录
以标准库为例:
import "fmt" -> /usr/local/go/pkg/darwin_amd64/fmt.a
import "os/exec" -> /usr/local/go/pkg/darwin_amd64/os/exec.a
import "yuhen/test" //默认模式 test.A
import M "yuhen/test" // 包重命名 M.A
import . "yuhen/test" // 简便模式 A
import _ "yuhen/test" // 仅让该包执行初始化函数�
local 模式:
workspace
|+--- src
|+--- learn
|+--- main.go
|+--- test
|+--- test.go
main.go
import "learn/test" //正常模式
import "./test" //本地模式,仅 go run main.go 有效
func init() {
fmt.Printf("now: %v\n", now)
}
var now = time.Now()
func main() {
fmt.Println("main:", int(time.Now().Sub(now).Seconds()))
}
func init() {
fmt.Println("init:", int(time.Now().Sub(now).Seconds()))
w := make(chan bool)
go func() {
time.Sleep(time.Second * 3)
w <- true
}()
<-w
}
输出:
init: 0
main: 3