10.2. 導入路徑

每個包是由一個全局唯一的字符串所標識的導入路徑定位。出現在import語句中的導入路徑也是字符串。

import (
    "fmt"
    "math/rand"
    "encoding/json"

    "golang.org/x/net/html"

    "github.com/go-sql-driver/mysql"
)

就像我們在2.6.1節提到過的,Go語言的規範並沒有指明包的導入路徑字符串的具體含義,導入路徑的具體含義是由構建工具來解釋的。在本章,我們將深入討論Go語言工具箱的功能,包括大家經常使用的構建測試等功能。當然,也有第三方擴展的工具箱存在。例如,Google公司內部的Go語言碼農,他們就使用內部的多語言構建系統(譯註:Google公司使用的是類似Bazel的構建系統,支持多種編程語言,目前該構件系統還不能完整支持Windows環境),用不同的規則來處理包名字和定位包,用不同的規則來處理單元測試等等,因為這樣可以更緊密適配他們內部環境。

如果你計劃分享或發佈包,那麼導入路徑最好是全球唯一的。為了避免衝突,所有非標準庫包的導入路徑建議以所在組織的互聯網域名為前綴;而且這樣也有利於包的檢索。例如,上面的import語句導入了Go團隊維護的HTML解析器和一個流行的第三方維護的MySQL驅動。