【Goライブラリ】go-iniでiniファイルの読み書き

go言語

アプリ制作において、ちょっとした設定はデータベースを使うまでもなく、手軽に扱えるコンフィグファイルを利用することが多々あるかと思います。Go言語でそんなコンフィグファイル(iniファイル)を扱うにはgo-iniライブラリを使います。

go-iniのインストール

ターミナルで以下のコマンドを実行してインストールしましょう。

$ go get gopkg.in/ini.v1

import “gopkg.in/ini.v1”

iniファイルの準備

config.iniファイル

shippingMode = 航空便, 船便
shippingMethod = 佐川急便,黒猫ヤマト,郵便EMS
status = オーダー済み,発送済み,審査中,受取済み

[otherSetting]
color = red
fontSize = 13

iniファイルを読み込んで構造体へ流し込む

type ConfigList struct {
	ShippingMode   []string `ini:"shippingMode"`
	ShippingMethod []string `ini:"shippingMethod"`
	Status         []string `ini:"status"`
	OtherSetting   `ini:"otherSetting"`
}

type OtherSetting struct {
	Color    string `ini:"color"`
	FontSize int    `ini:"fontSize"`
}

var Config ConfigList

func init() {
	cfg, _ := ini.Load("config.ini")
	cfg.MapTo(&Config)// Configにconfig.iniの中身を流し込む
}

構造体を使ってiniファイルの中身を参照してみよう

fmt.Println(Config.ShippingMode)
// 出力:[航空便 船便]

fmt.Println(Config.ShippingMethod)
// 出力:[佐川急便 黒猫ヤマト 郵便EMS]

fmt.Println(Config.Status)
// 出力:[オーダー済み 発送済み 審査中 受取済み]

// 指定したindexのデータを取り出す
fmt.Println(Config.ShippingMethod[1]) // 出力:黒猫ヤマト 

fmt.Println(Config.OtherSetting)
// 出力:{red 13}

// 個別の出力
fmt.Println(Config.OtherSetting.Color)// 出力:red

sectionを使って値を参照してみる

func main() {
    cfg, _ := ini.Load("config.ini")
    color := cfg.Section("otherSetting").Key("color").String()
    fmt.Println(color)// 出力:red
}

config.iniに新しいsectionを追加してみる

func init() {
	cfg, _ := ini.Load("config.ini")
	cfg.Section("additional").Key("url").SetValue("https://tomi-no-tubuyaki.com/")
	cfg.SaveTo("config.ini")
}

上記を実行してみるとconfig.iniファイルに新しいsectionの設定が追加される

shippingMode   = 航空便, 船便
shippingMethod = 佐川急便,黒猫ヤマト,郵便EMS
status         = オーダー済み,発送済み,審査中,受取済み

[otherSetting]
color    = red
fontSize = 13

[additional]
url = https://tomi-no-tubuyaki.com/

最後に

以上、簡単にgo-iniを紹介させていただきました。より詳しい使い方を知りたい方はドキュメントを御覧ください。

GoはGoogleが開発した言語でちょっと癖があると思いますが、これから採用されるところも増えてくるのではないかと予想されます。まだ若い言語なので、技術者はそこまで多くないかも?なので今のうち勉強しておくと就職にも有利かもしれないです。

Go言語のおすすめ書籍

コメント

タイトルとURLをコピーしました