【发布时间】:2016-05-03 11:44:00
【问题描述】:
我正在使用这个名为 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
不确定我应该做什么?
【问题讨论】:
-
您的
main.go55行中有什么内容? -
这有帮助吗? github.com/golang/go/issues/7133如果使用包标识符而不指定包中的项目,则返回的错误是“use of package foo not in selector”(play.golang.org/p/Q-KDAvp9mN)
-
@icza 第 55 行是
myConfig = NewMyConfig(&viper) -
@Blankman
&viper=>viper是包的名称。你可能想要myConfig = NewMyConfig(viper.New())。或者,如果您将变量命名为viper,请更改它。 -
@Blankman
viper是您可以用来引用包的标识符。v是包的未导出变量,你不能引用它。您可以使用包名称来引用包的导出标识符,例如viper.New()调用导出的New()函数,该函数返回一个指向新的、初始化的viper.Viper结构的指针。
标签: go