掌握「沒有選擇器的套件」Enigma
導入諸如多功能Viper 配置庫之類的包時,必須理解「沒有選擇器的包」錯誤背後的意圖。透過提供一些背景訊息,我們可以揭開此錯誤的神秘面紗,並為您提供有效解決該錯誤的知識。
了解問題
嘗試執行以下操作時會出現錯誤直接使用包的名稱,例如“viper”,而不用特定的導出標識符對其進行限定。考慮以下程式碼片段:
import "github.com/spf13/viper" myConfig = NewMyConfig(&viper) // Error: use of package viper without selector
解決方案
要使用需要*viper.Viper 指標的NewMyConfig 函數,您有兩個選擇:
選項1:初始化一個新的Viper實例
您可以利用viper.New 函數來初始化新的viper.Viper 實例:
vp := viper.New() myConfig = NewMyConfig(vp)
選項2:利用全域函數
或者,您可以利用viper套件導出的全域函數,這些函數在全域可存取的viper.Viper 實例:
myConfig = NewMyConfig(viper.GetViper())
此方法提供了另一種存取和修改 viper 配置的方法。
了解套件結構
Viper與許多其他套件一樣,使用內部未匯出的 viper.Viper 實例。包中的匯出函數相當於內部 viper.Viper 類型的方法。
透過理解這種二元性,您可以選擇使用全域函數或根據需要建立自己的 Viper 實例。
以上是如何解決使用Go套件時出現「Package Without Selector」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!