go語言之導包(import)

點操作
import(
    . "fmt"
)
這個點操作的含義就是這個包導入之後在你調用這個包的函數時,你可以省略前綴的包名,也就是調用的fmt.Println("hello world")可以省略的寫成Println("hello world")
別名操作
import(
    f "fmt"
)
別名操作的話調用包函數時前綴變成了我們的前綴,即f.Println("hello world")
_操作
import (
    "database/sql"
    _ "github.com/gogap/logrus/hooks/file"
)

_操作其實是引入該包,而不直接使用包裏面的函數,而是調用了該包裏面的init函數,要理解這個問題,需要理解包是怎麼按照順序加載的:
程序的初始化和執行都起始於main包。如果main包還導入了其它的包,那麼就會在編譯時將它們依次導入。有時一個包會被多個包同時導入,那麼它只會被導入一次(例如很多包可能都會用到fmt包,但它只會被導入一次,因爲沒有必要導入多次)。當一個包被導入時,如果該包還導入了其它的包,那麼會先將其它包導入進來,然後再對這些包中的包級常量和變量進行初始化,接着執行init函數(如果有的話),依次類推。等所有被導入的包都加載完畢了,就會開始對main包中的包級常量和變量進行初始化,然後執行main包中的init函數(如果存在的話),最後執行main函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章