包中的Golang init命令?

Der*_*rek 5 go

我有文件:

main/
    a.go
    b.go
    c.go
Run Code Online (Sandbox Code Playgroud)

前:

package main
import "fmt"

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

func main(){}
Run Code Online (Sandbox Code Playgroud)

b.go:

package main
import "fmt"

func init(){
    fmt.Println("b")
}
Run Code Online (Sandbox Code Playgroud)

c.go:

package main
import "fmt"

func init(){
    fmt.Println("c")
}
Run Code Online (Sandbox Code Playgroud)

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

hob*_*bbs 7

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

围棋规范说"鼓励建立系统呈现属于同一个包中的词汇文件名以编译多个文件,"所以这是一个安全的赌注,go build正是这么做的,而inits将在ABC的顺序运行.

  • 我认为安全的赌注是非常安全的,每个文件应该提供一个名为`initA()`,`initB()`等的函数,其中一个文件应该在一个明确定义的序列中调用它们. `的init()`.作为额外的奖励和重要的奖励,这将为读者提供明确的暗示. (6认同)