代碼
//main.go
package main
import (
"fmt"
"github.com/spf13/viper"
"os"
"strings"
)
const cmdRoot = "core"
func main() {
viper.SetEnvPrefix(cmdRoot)
viper.AutomaticEnv()
replacer := strings.NewReplacer(".", "_")
viper.SetEnvKeyReplacer(replacer)
viper.SetConfigName(cmdRoot)
viper.AddConfigPath("./")
err := viper.ReadInConfig()
if err != nil {
fmt.Println(fmt.Errorf("Fatal error when reading %s config file:%s", cmdRoot, err))
os.Exit(1)
}
environment := viper.GetBool("security.enabled")
fmt.Println("security.enabled:", environment)
fullstate := viper.GetString("statetransfer.timeout.fullstate")
fmt.Println("statetransfer.timeout.fullstate:", fullstate)
abcdValue := viper.GetString("peer.abcd")
fmt.Println("peer.abcd:", abcdValue)
}
//core.yaml
statetransfer:
recoverdamage: true
blocksperrequest: 20
maxdeltas: 200
timeout:
singleblock: 2s
singlestatedelta: 2s
fullstate: 60s
peer:
abcd: 3322d
編譯
go get github.com/spf13/viper
go build -o vip
處理go get github.com/spf13/viper過程中問題
unrecognized import path "golang.org/x/sys/unix"
unrecognized import path "golang.org/x/text/transform"
unrecognized import path "golang.org/x/text/unicode/norm"
解決辦法:
git clone https://github.com/golang/sys.git $GOPATH/src/golang.org/x/sys
git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text
運(yùn)行
CORE_SECURITY_ENABLED=true ./vip
security.enabled: true
statetransfer.timeout.fullstate: 60s
peer.abcd: 3322d
參考文檔
golang插件viper
http://blog.csdn.net/qq_27809391/article/details/54091977