沒有啟用 go111module 時, import 語句會在三個地方查詢包**,
相對目錄, 比如 import "./mylib" 會掃瞄並載入當前目錄下的mylib目錄下的所有go檔案, 這時需要注意的是
import "相對路徑" 這裡的路徑只是為了找到一堆go檔案, 最後一級目錄名 可以 與 真正載入的**中的 包名(package mylib) 不一致, **中使用庫函式時 還是要使用真正的包名(package mylib) 而不是 最後一級目錄名
被載入的目錄(不遞迴下去)中的所有的go檔案原始碼中的包名必須相同一致, 否則編譯報錯
$goroot/src/下, 比如 import "fmt"
$gopath/src下, 比如 import "github.com/pkg/errors"
如果啟用了 go111module(on 或 auto, auto 需要在當前目錄或遞迴向上的目錄中有go.mod檔案) 就會載入 $gopath/pkg/mod/下的包, 此時需要注意兩點
保證go111module啟用
go.mod 檔案中需要 require 要import的包 和 版本號, 如:
)這樣 import "github.com/libp2p/go-libp2p" 就不會找 $gopath/src下, 而是找 $gopath/pkg 下
揹包問題 1 揹包的引入
上篇文章我考慮的是可以找零的方式有幾種,是運用搜尋解決的,但是如果我們要解決的是優化問題,就是說最小要多少硬幣呢?題目的位址是 其實他是乙個揹包問題,所以我準備重學一下。最近做硬幣找零問題,它實際是個揹包問題,很多知識掌握的不紮實。這裡重新總結一下,老規矩,還是靠題目驅動,下面所有題目都給了鏈結 大...
Go 的包結構
除使用預設包名外,還可使用別名,已解決同名衝突問題。歸納起來,有四種不同的匯入方式。預設方式 test.a 別名方式 x.a 簡便方式 a 初始化方式 無法引用,僅用來初始化目標包 不能直接或間接匯入自己,不支援任何形式的迴圈匯入。許可權 所有成員在包內均可訪問,無論是否在同一原始碼檔案中。但只有名...
go包的理解
結論 import時指定的字串,是相對於 gopath的目錄路徑,告訴了go,要去載入這個目錄下所有的包檔案 不包括子目錄中的檔案 乙個目錄中所有的原始檔 不包括子目錄 代表了單獨的乙個包,這些原始檔內的package關鍵字指出的包名,必須一致,否則無法被使用 import指定的載入目錄 目錄中的原...