Golangで設定ファイルの読み込み

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]
}

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.