天天看點

go 關于包中的init函數

在學習go包管理中提及到 init 函數 于是做了如下測試:

  • 在src 目錄下的 project1目錄建立了 main 檔案夾和 test 檔案夾
  • 然後在 test 檔案夾中寫了三個go檔案,包都為 test
  • 在三個檔案中都寫了 init() 函數 ,三個檔案的init函數類似下面
func init()  {
    fmt.Println("this is girl init")
}
           
  • 之後在main檔案中引入test包

    import "project1/test"

go 關于包中的init函數

想看看多個 init函數 會不會沖突,發現 并不會

之後 想看看多個 init 的 執行順序,結果發現好像是按照 檔案命名的 ascii 順序 (字母順序)來執行的

執行結果:

this is exam init
this is girl init
this is try init
           

嘗試 改變 三個檔案的命名,可以發現輸出的順序與檔案名排序一緻,我感覺這樣有點不是很好啊….

以後應該是盡量 一個包 隻寫 一個 init函數 吧….