go package init
沒地方發(fā),太久沒實際寫go了,都是面試吹比
發(fā)現(xiàn)很多簡單的地方都不懂
之前我以為main引用別的包,肯定是別的包的init先走然后才走main的
盡管我看了 go sepc 里的那條”按照 import graph 先初始化被引用的包“,我還是沒意識到這一點
簡單來說
1. 如果 A 導(dǎo)入了 B,則先走 B 的所有變量初始化/init,再走 A 的。
2. 同一個包內(nèi),source 文件名決定了不同文件間的初始化順序,文件內(nèi)部則按代碼先后。
防止初始化問題,有問題先panic掉
惡補基礎(chǔ)了
發(fā)現(xiàn)很多簡單的地方都不懂
之前我以為main引用別的包,肯定是別的包的init先走然后才走main的
盡管我看了 go sepc 里的那條”按照 import graph 先初始化被引用的包“,我還是沒意識到這一點
簡單來說
1. 如果 A 導(dǎo)入了 B,則先走 B 的所有變量初始化/init,再走 A 的。
2. 同一個包內(nèi),source 文件名決定了不同文件間的初始化順序,文件內(nèi)部則按代碼先后。
防止初始化問題,有問題先panic掉
惡補基礎(chǔ)了
全部評論

我今天又想到一個坑,用 go run 有三個模式,用文件模式一定注意,不會幫你導(dǎo)入其他文件
相關(guān)推薦

點贊 評論 收藏
分享
點贊 評論 收藏
分享

點贊 評論 收藏
分享
點贊 評論 收藏
分享