Golang 라 이브 러 리 - viper 설정 파일 읽 기
viper 는 Steve Francia 가 작성 한 오픈 소스 설정 솔 루 션 이자 cobra 의 작성 자 입 니 다. viper 의 기능 을 살 펴 보 겠 습 니 다.
go get github.com/spf13/viper
GitHub 주소
/ 1 / 프로필 읽 기
설정 파일 을 읽 는 중 집중 사용 방식 을 보 여 줍 니 다
viper
.우 리 는
.yml
서 류 를 예 로 들 었 다.config.yml
user:
name: "wise"
age: 18
config.go
package config
import (
"fmt"
"github.com/spf13/viper"
)
// , config.yml
//var filePath = "../test/config.yml"
var filePath = "config.yml"
var cfg = Config{}
// ,
//
type Config struct {
UserInfo struct{
Name string `mapstructure:"name"`
Age string `mapstructure:"age"`
} `mapstructure:"user"`
}
//
type Config struct {
User UserInfo `mapstructure:"user"`
}
UserInfo struct{
Name string `mapstructure:"name"`
Age int `mapstructure:"age"`
}
func LoadConfig() {
//
viper.SetConfigType("yml")
viper.SetConfigFile(filePath)
//
err := viper.ReadInConfig()
if err != nil {
fmt.Println(" , : ", err)
}
// viper key value ,
fmt.Println(viper.Get("user.name"))
fmt.Println(viper.GetInt("user.age"))
// key , true/false
fmt.Println(viper.IsSet("user.name"))
// key value , ,
viper.Set("user.age",19)
// cfg
err = viper.Unmarshal(&cfg)
if err != nil {
fmt.Println(" , : ", err)
}
}
//
func GetInfo() Config {
return cfg
}
테스트 코드
config_test.go
import (
"fmt"
"testing"
)
func TestGetInfo(t *testing.T) {
LoadConfig()
fmt.Println("name : ",GetInfo().UserInfo.Name)
fmt.Println("age : ",GetInfo().UserInfo.Age)
}
출력 정보
name : wise age : 18
위 에서 저희 가 사용 한 viper 의 기능 을 정리 해 보도 록 하 겠 습 니 다.
설정 파일 을 자동 으로 업데이트 할 수 있 는 지 살 펴 보 겠 습 니 다.
package main
import (
"fmt"
"github.com/spf13/viper"
"time"
)
func main() {
viper.SetConfigType("yml")
viper.SetConfigFile("./test/config.yml")
err := viper.ReadInConfig()
if err != nil {
fmt.Println("read config is failed err:", err)
}
viper.WatchConfig()
fmt.Println("age : ", viper.GetInt("user.age"))
// 20s, config.yml age
time.Sleep(time.Second * 20)
fmt.Println("age : ", viper.GetInt("user.age"))
}
출력 정보
age : 18 age : 180
두 번 인쇄 한 결과 같은 친구 들 은 수면 시간 을 좀 더 길 게 조절 해서 해 볼 수 있어 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
golang의 시간대와 신기한 시간.Parse상기 코드의 테스트 결과에서 몇 가지를 얻을 수 있다. time.Now에서 얻은 현재 시간의 시간대는 컴퓨터의 현재 시간대와 같다. time.Parse는 시간 문자열을 Time으로 변환합니다. Time 변수가 어떤 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.