技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

ini【Go】

GitHub - go-ini/ini: Package ini provides INI file read and write functionality in Go.を使って、iniファイルの読み込みを行います。

下記iniファイルが同階層にある場合の例です。

config.ini

[web]
port = 8080

[db]
name = stock.sql
driver = sqlite3

main.go

package main

import (
    "fmt"
    "github.com/go-ini/ini"
)

type ConfigList struct {
    Port      int
    Name      string
    SQLDriver string
}

var Config ConfigList

func init() {
    cfg, _ := ini.Load("config.ini")    // iniファイルを読み込む
    Config = ConfigList{    // structの中身に代入
        Port:      cfg.Section("web").Key("port").MustInt(),    // MustIntのカッコ内が空の場合、iniファイルに対象の情報がなければ0が入る
        Name:      cfg.Section("db").Key("name").MustString("xxx.sql"),    // iniファイルに対象の情報がなければ、MustStringのカッコ内の値が入る
        SQLDriver: cfg.Section("db").Key("driver").String(),    // Mustがない場合、iniファイルに対象の情報がなければ、空になる
    }
}

func main() {
    fmt.Println(Config.Port, Config.Name, Config.SQLDriver)
}


中身に代入する際の、ini.Load("").Section("").Key("")以下は、
デフォルト値を設定する必要があるかなど、要件に応じて決めます。