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("")以下は、
デフォルト値を設定する必要があるかなど、要件に応じて決めます。