アプリ制作において、ちょっとした設定はデータベースを使うまでもなく、手軽に扱えるコンフィグファイルを利用することが多々あるかと思います。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が開発した言語でちょっと癖があると思いますが、これから採用されるところも増えてくるのではないかと予想されます。まだ若い言語なので、技術者はそこまで多くないかも?なので今のうち勉強しておくと就職にも有利かもしれないです。
コメント