go - 在包内初始化订单

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

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

最佳答案

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

Go spec说“鼓励构建系统以词法文件名顺序向编译器呈现属于同一包的多个文件”所以可以肯定的是 go build 确实做到了这一点,并且 inits 将在 A-B-C 中运行订单。

关于go - 在包内初始化订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32829538/

相关文章:

amazon-web-services - 向多个设备发送 SNS 推送通知消息

go - 尝试安装 BEEGO 时出错

arrays - 数组在 Go 中的功能是否与在 Ruby 或 Python 中的功能相同?

Go 中的协程和 channel

go - panic 并从包裹中恢复

go - 错误响应 : [2] Build failed using GCP - Golang

windows - 无法使用protoc-gen-go构建protobuf

go - 是否可以获取返回了返回值的源代码行?

Golang 生成一个 32 字节的 key

json - 如何用 json 存储 Protocol Buffer 的 "oneof"字段