他にたくさんあるけど
こんな感じの内容はたくさんあると思いますが、、goの初心者
がなんとなく
goの手習いとして、まずは設定ファイルを読みだすことをしてみようと思いました。
go動作環境
- windows 10 Home
- Visual Studio Code
- go 1.16
goを何も設定されてないところから
以下の感じで出来るようにしました。
- https://golang.org/doc/install
からダウンロードしてインストール
インストールディレクトリはデフォルトのまま - 以下でgo/src/samplepにmain.goとconfig.ymlを格納する
$ cd %HOMEPATH%/go/src $ mkdir samplep $ go mod init $ go get github.com/spf13/viper $ go run ./main.go
main.go
main.goは以下の通りです。
package main import ( "flag" "fmt" "github.com/spf13/viper" ) func main() { var ( c = flag.String("config", "config.yml", "config file") ) flag.Parse() var yamlconfig = loadConfigForYaml(*c) fmt.Println(yamlconfig.Node) } type appConfig struct { Node []struct { Name string URL string } } func loadConfigForYaml(configFile string) *appConfig { v := viper.New() v.SetConfigType("yaml") v.SetConfigName(configFile) v.AddConfigPath(".") if err := v.ReadInConfig(); err != nil { fmt.Println("config read error !!!") fmt.Println(err) } conf := &appConfig{} if err := v.Unmarshal(conf); err != nil { fmt.Println("config file Unmarshal error") fmt.Println(err) } return conf }
go言語を眺めるだけでなく、久しぶりに書いてみたのですが、まだ文法がよく分かってません。。
単なる感想ですが、Pythonに慣れてると、いまいち融通が効かず、使いづらいです。。
config.yml
読みだす内容は以下の通りです。
--- node: - name: 'local-ubuntu' url: 'http://192.168.132.128:9100' - name: 'VPS' url: 'http://192.168.208.111:9100'
実行結果
実行結果は以下になります。
> go run .\main.go [{local-ubuntu http://192.168.132.128:9100} {VPS http://192.168.208.111:9100} > go build ./main.go -a---- 2021/02/21 18:21 5856768 main.exe
終わりに
もちろんこれはgoのコンパイルができるか確かめただけです。それでも結構かかりました。。
この次は、Windows GUIプログラミングをしようと思います。