新手疑惑的import導包 [golang 學習筆記1]

一 包的導入語法

    在寫Go代碼的時候經常用到import這個命令用來導入包文件,看到的方式參考如下:

    import "fmt" //如果只有一個包可以直接在import後面加上要導入的包
    //如果包含一個或以上包可以使用 import(),在掛號裏依次加入需要導入的包
    import(
        "fmt"
        "os"
    )
    然後在代碼裏面可以通過如下的方式調用

    fmt.Println("hello world")

 
二  特殊的import
    下面介紹一些讓很多新手很費解的特殊import:
  1. 點操作   
    有時候會看到如下的方式導入包     
    import(
        . “fmt” 
    ) 
    這個點操作的含義就是這個包導入之後在你調用這個包的函數時,你可以省略前綴的包名,也就是前面你調用的
    
    fmt.Println(“hello world”)  
    
    可以省略的寫成
    
    Println(“hello world”)
    
  2. 別名操作   
    別名操作顧名思義可以把包命名成另一個用起來容易記憶的名字
    import( 
        fun “fmt”
    )   
    
    別名操作調用包函數時前綴變成了重命名的前綴,這邊使用fun替換fmt,即
    
    fmt.Println(“hello world”)
    
    替換爲
    
    fun.Println(“hello world”)
    
  3.  _操作(下劃線操作)
    這個操作經常是讓很多人費解的一個操作符,請看下面這個import
          
    import ( 
        “fmt” 
        _ “os” 
    ) 

    _操作其實只是引入該包。當導入一個包時,它所有的init()函數就會被執行,但有些時候並非真的需要使用這些包,僅僅是希望它的init()函數被執行而已。這個時候就可以使用_操作引用該包了。即使用_操作引用包是無法通過包名來調用包中的導出函數,而是隻是爲了簡單的調用其init函數()。

  4.相對路徑和絕對路徑    
    
    上面這個fmt是Go語言的標準庫,他其實是去GOROOT下去加載該模塊,當然Go的import還支持如下兩種方式來加載自己寫的模塊:

    相對路徑    import   "./model"  //當前文件同一目錄的model目錄,但是不建議這種方式import

    絕對路徑    import   "shorturl/model"  //注意,如果是使用GOPATH, 默認加載GOPATH/src/shorturl/model模塊
                                            //如果是使用GO MODULES, 默認加載GOPATH/pkg/mod/shorturl/model模塊(即對應go modules設置的默認路徑下 )

三  包的導入過程說明

    程序的初始化和執行都起始於main包。如果main包還導入了其它的包,那麼就會在編譯時將它們依次導入。    有時一個包會被多個包同時導入,那麼它只會被導入一次(例如很多包可能都會用到fmt包,但它只會被導入一次,因爲沒有必要導入多次)。    當一個包被導入時,如果該包還導入了其它的包,那麼會先將其它包導入進來,然後再對這些包中的包級常量和變量進行初始化,    接着執行init函數(如果有的話),依次類推。等所有被導入的包都加載完畢了,就會開始對main包中的包級常量和變量進行初始化,    然後執行main包中的init函數(如果存在的話),最後執行main函數。下圖詳細地解釋了整個執行過程:

參考:https://blog.csdn.net/boshuzhang/article/details/82760421

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