我尝试在示例项目中创建程序包配置,但某些功能无法正常运行,我具有文件夹结构:
config/config.go // package config
main.go // package main
并且我想在主文件中使用配置:
func main() {
conf := config.GetConf()
db := dbConn{
schemas: map[string]*sql.DB{},
url: fmt.Sprintf("tcp(%s)", conf.db['dev']),
username: db.user,
password: db.password,
}
db.create()
}
我的配置文件:
type Config struct {
db map[string]string
user string
password string
}
func GetConf() *Config {
config := Config{
db: map[string]string{
"dev": "database.url",
},
user: "root",
password: "pass",
}
return &config
}
编译器返回错误:conf.db未定义(无法引用未导出的字段或方法db)
答案 0 :(得分:3)
引用其他程序包(声明包除外)中未导出的标识符是编译时错误。
导出标识符(以大写字母开头),它将起作用。
type Config struct {
DB map[string]string
User string
Password string
}
func GetConf() *Config {
config := Config{
DB: map[string]string{
"dev": "database.url",
},
User: "root",
Password: "pass",
}
return &config
}
在您的主要帐户中:
func main() {
conf := config.GetConf()
db := dbConn{
schemas: map[string]*sql.DB{},
url: fmt.Sprintf("tcp(%s)", conf.DB['dev']),
username: conf.User,
password: conf.Password,
}
db.create()
}