匯入包
你可以使用以下語句匯入單個包:
import "path/to/package"
或將多個匯入組合在一起:
import (
"path/to/package1"
"path/to/package2"
)
這將在 $GOPATH
中的 .go
檔案中查詢相應的 import
路徑,並允許你通過 packagename.AnyExportedName
訪問匯出的名稱。
你還可以通過使用 ./
預先包裝來訪問當前資料夾中的本地包。在具有以下結構的專案中:
project
├── src
│ ├── package1
│ │ └── file1.go
│ └── package2
│ └── file2.go
└── main.go
你可以在 main.go
中呼叫它來匯入 file1.go
和 file2.go
中的程式碼:
import (
"./src/package1"
"./src/package2"
)
由於包名稱可能會在不同的庫中發生衝突,因此你可能希望將一個包別名為新名稱。你可以通過在 import-statement 前新增你要使用的名稱來執行此操作。
import (
"fmt" //fmt from the standardlibrary
tfmt "some/thirdparty/fmt" //fmt from some other library
)
這允許你使用 fmt.*
訪問以前的 fmt
包,使用 tfmt.*
訪問後一個 fmt
包。
你還可以將包匯入到自己的名稱空間中,這樣你就可以使用單個點作為別名來引用不帶 package.
字首的匯出名稱:
import (
. "fmt"
)
上面的示例將 fmt
匯入全域性名稱空間,並允許你直接呼叫 Printf
: Playground
如果匯入包但不使用任何匯出的名稱,Go 編譯器將列印錯誤訊息。為了避免這種情況,你可以將別名設定為下劃線:
import (
_ "fmt"
)
如果你不直接訪問此軟體包但需要執行 init
函式,這將非常有用。
注意:
由於程式包名稱基於資料夾結構,因此資料夾名稱和匯入引用中的任何更改(包括區分大小寫)都會導致 Linux 和 OS-X 中的編譯時錯誤不區分大小寫的匯入衝突,這很難跟蹤並修復(錯誤訊息對凡人來說有點神祕,因為它試圖傳達相反的情況 - 由於區分大小寫,比較失敗)。
例如:“path / to / Package1”vs“path / to / package1”
例項: https : //github.com/akamai-open/AkamaiOPEN-edgegrid-golang/issues/2