package config import ( "github.com/spf13/viper" "time" ) // server 服务器配置结构体(包内私有) type server struct { Port int } // jwt 配置结构体(包内私有) type jwt struct { Secret string Expiry time.Duration } // 全局导出变量,指向私有结构体实例 var ( Server *server JWT *jwt ) // InitApplicationConfig 初始化配置,传入配置文件路径 func InitApplicationConfig(configPath string) (error, error) { v := viper.New() v.SetConfigFile(configPath) v.SetConfigType("yaml") if err := v.ReadInConfig(); err != nil { return err, nil } var s server if err := v.UnmarshalKey("server", &s); err != nil { return err, nil } Server = &s var j jwt if err := v.UnmarshalKey("jwt", &j); err != nil { return err, nil } JWT = &j return nil, nil }