Golangで設定ファイルの読み込み
2011/07/23
2011/07/24
Golangでアプリを書いてて、最初は設定内容もソースに直書きしてたけど、さすがにそろそろ設定を外出ししたくなってきた。
json形式のファイルで設定できるようにする
標準でjsonライブラリが存在してるので、設定ファイルの形式は、jsonを使うことにした。 Configという構造体を定義して、構造体のインスタンスに読み込むだけでいいらしい。 mapで受け取ることもできるけど、いちいちキャストが必要になるので、構造体を定義する方が 簡単だと思う。
- appconfig.go
package appconfig import ( "os" "io/ioutil" "json" "fmt" ) // 設定ファイルの値を表現する構造体 type Config struct { Id int Name string Array []int } // 設定ファイルを読み込む func Parse(filename string) (Config, os.Error) { var c Config jsonString, err := ioutil.ReadFile(filename) if err != nil { fmt.Println("error" + err.String()) return c, err } err = json.Unmarshal(jsonString, &c) if err != nil { fmt.Println("error" + err.String()) return c, err } return c, nil } |
- main.go
package main import ( "./appconfig" "fmt" ) func main() { conf, err := appconfig.Parse("./config.json") if err != nil { fmt.Println("error " + err.String()) } fmt.Println(conf.Name) fmt.Println(conf.Array[0]) } |
- Makefile
default: 6g appconfig.go 6g main.go 6l main.6 #6g 6lは環境によって変更する |
- config.json
{ "Id": 1, "Name": "json test", "Array": [1, 2] } |