我在網路https://github.com/deckarep/golang-set中發現了一個非常有用的 Go 庫,它試圖將 Python 集移植到 Go。
感謝 Visual Studio Code,我最終通過匯入庫import "github.com/deckarep/golang-set"并在我的代碼中呼叫函式來讓它作業:
mySet := mapset.NewSet()
VS Code 自動識別別名并替換 import 指令:
import mapset "github.com/deckarep/golang-set"
但是,作為一個發現這些別名令人困惑的人,我試圖將其洗掉,但這樣做,VSCode 將其從匯入陳述句和我的代碼中洗掉。VS Code 然后告訴我:
未宣告的名稱:NewSet 編譯器(UndeclaredName)
NewSet(...)的包名也是package mapset. 所以我想我可以簡單地洗掉它。但它不起作用。
我還嘗試與其他 3rd 方包類似地作業,并通過存盤庫的名稱呼叫函式:
mySet := golang-set.NewSet()
這也會導致錯誤。由于連字符可能無法在此處洗掉別名,還是我正在監督其他事情?
uj5u.com熱心網友回復:
這里有幾件事:
mapset是包名。您可以通過查看包源代碼來了解這一點。雖然在這種情況下,從語言的角度來看,并不嚴格需要匯入別名,但為了清楚起見,添加了它,因為包名稱 (
mapset) 與匯入路徑 ( ) 不匹配golang-set。如果沒有 import 陳述句中的別名,就無法判斷包是如何被參考的。這就是為什么它在那里很重要。您不能
golang-set用作匯入名稱,因為-匯入別名中不允許使用該字符。但是,如果你真的想要,你可以使用golang_set或類似的,通過明確提供這個作為你的別名:import golang_set "github.com/deckarep/golang-set"請注意,這違反了命名約定,因為包的名稱中不應包含
_字符。但它應該仍然有效。最佳實踐只是
mapset用作別名。它是所有可用選項中最不容易混淆的(這就是它被自動選擇的原因)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/462773.html
