首頁 > 後端開發 > Golang > 如何解決使用Go套件時出現「Package Without Selector」錯誤?

如何解決使用Go套件時出現「Package Without Selector」錯誤?

DDD
發布: 2025-01-01 11:58:11
原創
318 人瀏覽過

How to Resolve the

掌握「沒有選擇器的套件」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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板