在學習go包管理中提及到 init 函數 于是做了如下測試:
- 在src 目錄下的 project1目錄建立了 main 檔案夾和 test 檔案夾
- 然後在 test 檔案夾中寫了三個go檔案,包都為 test
- 在三個檔案中都寫了 init() 函數 ,三個檔案的init函數類似下面
func init() {
fmt.Println("this is girl init")
}
- 之後在main檔案中引入test包
import "project1/test"
想看看多個 init函數 會不會沖突,發現 并不會
之後 想看看多個 init 的 執行順序,結果發現好像是按照 檔案命名的 ascii 順序 (字母順序)來執行的
執行結果:
this is exam init
this is girl init
this is try init
嘗試 改變 三個檔案的命名,可以發現輸出的順序與檔案名排序一緻,我感覺這樣有點不是很好啊….
以後應該是盡量 一個包 隻寫 一個 init函數 吧….