包内初始化订单

2024-03-27

我有文件:

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")
}

字符串将以什么顺序输出?


各个文件名传递给 Go 编译器的顺序。

The Go spec https://golang.org/ref/spec#Package_initialization说“鼓励构建系统以词法文件名顺序向编译器呈现属于同一包的多个文件”,因此可以肯定的是go build正是这样做的,init 将以 A-B-C 的顺序运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

包内初始化订单 的相关文章

随机推荐