我知道很多人已经问过这个问题,我研究并尝试过,但我不明白,首先这是我的功能:
func Config() *config {
configfile := viper.New()
configfile.SetConfigFile("config.toml")
configfile.ReadInConfig()
type configstruct struct {
first_launch bool
generate_desktop_file bool
systemwide_desktop_entry bool
webapps_directory string
locale string
}
config := configstruct{
first_launch: configfile.GetBool("general.first_launch"),
generate_desktop_file: configfile.GetBool("general.generate_desktop_file"),
systemwide_desktop_entry: configfile.GetBool("general.systemwide_desktop_entry"),
webapps_directory: configfile.GetString("general.webapps_directory"),
locale: configfile.GetString("general.locale")}
fmt.Println(reflect.TypeOf(config))
return &config
}
我尝试让它以这种方式工作,就像很多人写的那样,但后来我在
func Config() *config
行得到了这个错误。这是错误:undefined: config
。显然我做错了什么,但我不知道我做错了什么。旁注,我对 Go 完全陌生,之前我只使用 Python
我尝试将 *config 添加到 func 中,并在 func 内部添加了一个 return &config,我期望它将返回一个我可以使用的指针,但我收到错误:
undefinied config
您应该从函数中返回
*configstruct
。在函数外部定义结构始终是一个好主意,否则它会绑定在 function
范围内,请参阅下面更新的代码。
type configstruct struct {
first_launch bool
generate_desktop_file bool
systemwide_desktop_entry bool
webapps_directory string
locale string
}
func Config() *configstruct {
configfile := viper.New()
configfile.SetConfigFile("config.toml")
configfile.ReadInConfig()
config := configstruct{
first_launch: configfile.GetBool("general.first_launch"),
generate_desktop_file: configfile.GetBool("general.generate_desktop_file"),
systemwide_desktop_entry: configfile.GetBool("general.systemwide_desktop_entry"),
webapps_directory: configfile.GetString("general.webapps_directory"),
locale: configfile.GetString("general.locale")}
fmt.Println(reflect.TypeOf(config))
return &config
}