settings
[]byte type is supported
패키지는 필요한 환경 변수를 찾고이를 사용하여 응용 프로그램의 설정을 지정합니다. 또한 패키지는 표준 validate 태그를 사용하여 최종 구조물을 검증합니다.
사용하여 패키지를 설치 go get .
go get github.com/kaatinga/settings그런 다음 패키지를 자신의 코드로 가져옵니다.
import "github.com/kaatinga/settings" 태그 env , default 및 validate 사용할 수있는 설정 모델을 만듭니다. 변수를 알리고 호출 Load() :
type Settings struct {
Port string `env:"PORT" validate:"numeric"`
Database string `env:"DATABASE"`
CacheSize byte `env:"CACHE_SIZE" default:"50"`
LaunchMode string `env:"LAUNCH_MODE"`
}
var settings Settings
err := Load ( & settings )
if err != nil {
return err
} env 태그에는 관련 환경 변수의 이름이 포함되어야합니다. default 태그에는 환경 변수가 발견되지 않은 경우 사용되는 기본값이 포함됩니다. validate 태그에는 유효성 검사기 패키지의 문서를 파악하는 선택적 유효성 검사 규칙이 포함될 수 있습니다.
| 유형 | 실제 유형 |
|---|---|
| 끈 | - |
| 부울 | - |
| ~ int | - |
| ~ uint | - |
| 시간 | int64 |
중첩 스트러크는 포인터를 통해 또는 포인터없이 추가 할 수 있습니다. 예:
type Model2 struct {
CacheSize byte `env:"CACHE_SIZE"`
}
type Model3 struct {
Port string `env:"PORT validate:"numeric"`
}
type Model1 struct {
Database string `env:"DATABASE"`
Model2 * Model2
Model3 Model3
}포인터를 통해 추가 된 중첩 스트러크를 반드시 초기화해서는 안됩니다.
var settings Model1
if err := Load ( & settings ); err != nil {
return err
}그럼에도 불구하고 원한다면 할 수 있습니다.
var settings = Model1 { Model2 : new ( Model2 )}
if err := Load ( & settings ); err != nil {
return err
}구성 모델에는 정렬 및 사용 방법에 몇 가지 제한이 있습니다.
구성 모델에 빈 구조물을 추가하면 Load() 오류를 반환합니다.
루트 모델을 초기화하고 포인터를 통해 Load() 시그니처에 추가해야합니다.
err := Load ( & EnvironmentSettings )
if err != nil {
return err
}그렇지 않으면 함수가 오류를 반환합니다.