新的 Go 程序員在這里——如果這是陳舊的領域,我深表歉意,但我的谷歌搜索沒有找到我正在尋找的答案。簡短版本:作為核心 Go 項目外部的程序員,我能否強制我的包以特定名稱導入。如果是這樣,怎么做?長版:我最近嘗試bcrypt從以下 GitHub 存儲庫安裝包,具有以下內容go getgo get github.com/golang/crypto包正確下載到我的工作區(qū),但是當我嘗試導入它時,出現以下錯誤$ go run main.go main.go:10:2: 目錄 /path/to/go/src/github.com/golang/crypto/bcrypt 中的代碼需要導入“golang.org/x/crypto/bcrypt”ie 告訴 Go 這個包應該用golang.org/x/crypto/bcrypt. 這讓我知道我真正想要的是go get golang.org/x/crypto/bcrypt我想在我自己的包中做類似的事情——這個功能是內置在 Go 包中的嗎?或者作者是否crypto/bcrypt在運行時做一些事情來檢測和拒絕無效的包導入名稱?
1 回答

喵喔喔
TA貢獻1735條經驗 獲得超5個贊
是的,它是內置的,我似乎找不到實現文檔(它是 1.5 或 1.6 中相對較新的功能)但是語法是:
package name // import "your-custom-path"
示例:https : //github.com/golang/crypto/blob/master/bcrypt/bcrypt.go#L7
// 編輯
此功能的設計文檔是https://docs.google.com/document/d/1jVFkZTcYbNLaTxXD9OcGfn7vYv5hWtPx9--lTx1gPMs/edit
// 編輯
@JimB 指出https://golang.org/cmd/go/#hdr-Import_path_checking,并在 go1.4 發(fā)行說明中:https ://golang.org/doc/go1.4#canonicalimports
- 1 回答
- 0 關注
- 127 瀏覽
添加回答
舉報
0/150
提交
取消