包中的Golang初始订单?

时间:2015-09-28 18:30:36

标签: go

我有文件:

main/
    a.go
    b.go
    c.go

a.go:

package main
import "fmt"

func init(){
    fmt.Println("a")
}

func main(){}

b.go:

package main
import "fmt"

func init(){
    fmt.Println("b")
}

c.go:

package main
import "fmt"

func init(){
    fmt.Println("c")
}

输出字符串的顺序是什么?

1 个答案:

答案 0 :(得分:7)

将相应文件名传递给Go编译器的顺序。

Go spec说“鼓励构建系统以词汇文件名顺序向编译器提供属于同一个包的多个文件”,这样可以安全地确定go build正是如此,并且inits将以ABC顺序运行。