package main import ( "fmt" "github.com/spf13/viper" "log" "time" ) type database struct { Server string Ports []int } type config struct { Database database } func main() { viper.SetConfigName("example") viper.SetConfigType("toml") viper.AddConfigPath("../") if err := viper.ReadInConfig(); err != nil { log.Fatal("read config failed,err:", err) } var c config viper.Unmarshal(&c) fmt.Println(c.Database.Ports[1]) viper.WatchConfig() fmt.Println("redis port before sleep: ", viper.Get("database.server")) time.Sleep(time.Second * 10) fmt.Println("redis port after sleep: ", viper.Get("database.server")) }