亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在沒有選擇器錯誤的情況下使用包

在沒有選擇器錯誤的情況下使用包

Go
蠱毒傳說 2022-01-10 10:30:24
我正在使用這個名為Viper 的配置庫在我的主要我有這個:viper.SetConfigName("development")viper.AddConfigPath("config/settings/")err := viper.ReadInConfig()if err != nil {    fmt.Println("viper config read error %v", err)}然后我有一個以毒蛇為參數的結構:type MyConfig struct {  v *viper.Viper}在我的 main 中,我有一個返回這個 MyConfig 的函數,例如:func NewMyConfig(v *viper.Viper) *MyConfig {    return &MyConfig{v: v}}我收到此錯誤:./main.go:55: use of package viper without selector不確定我應該做什么?
查看完整描述

1 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

當你導入一個包時


import "github.com/spf13/viper"

包名稱(viper在這種情況下)將作為新標識符提供給您。您可以使用此標識符來構造限定標識符以引用包的導出標識符(以大寫字母開頭的標識符)。


包名本身不能單獨使用。給你錯誤的行:


myConfig = NewMyConfig(&viper)

您使用了包名稱,viper但沒有指定要從包中引用的導出標識符。


您想使用您的NewMyConfig()函數來獲取指向MyConfig結構新值的指針。您的NewMyConfig()函數需要*viper.Viper. 由于viper.Viper結構包含未導出的字段,您可以像創建它一樣創建它&viper.Viper{},但是viper包導出一個函數viper.New(),該函數可用于獲取指向新的初始化viper.Viper值的指針。你可以像這樣使用它:


vp := viper.New()

myConfig = NewMyConfig(vp)

請注意,viper包聲明了一個內部的、全局的、未導出的viper.Viper“實例”。有許多與該類型方法匹配的導出函數。這些“匹配”函數適用于全局的、未導出的實例。所以你可以選擇使用包中所有導出的全局函數,或者創建你自己的實例,然后繼續使用它的方法。viper.Viperviper.ViperviperViper


查看完整回答
反對 回復 2022-01-10
  • 1 回答
  • 0 關注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號