[Go言語]Configファイルをini.v1で読み込む方法

Golangでini.v1を利用してコンフィグファイルを読みこむ方法です。

ディレクトリ構成

.
├── config
│   └── config.go
├── config.ini
└── main.go

ini.v1をインストール

$ go get gopkg.in/ini.v1

設定ファイル作成

config.ini

[db]
host = 127.0.0.1
port = 8889
user = root
password = root
name = example

ファイル読み込み

config.go

package config

import (
	"log"
	"os"

	"gopkg.in/ini.v1"
)

type ConfigList struct {
	DbHost     string
	DbPort     int
	DbUser     string
	DbPassword string
	DbName     string
}

var Config ConfigList

func init() {
	cfg, err := ini.Load("config.ini") // configファイル読み込み
	if err != nil {
		log.Printf("Failed to read file: %v", err)
		os.Exit(1) // プログラム終了
	}

	Config = ConfigList{
		DbHost:     cfg.Section("db").Key("host").String(),
		DbPort:     cfg.Section("db").Key("port").MustInt(),
		DbUser:     cfg.Section("db").Key("user").String(),
		DbPassword: cfg.Section("db").Key("password").String(),
		DbName:     cfg.Section("db").Key("name").String(),
	}
}

呼び出し

main.go

package main

import (
	"fmt"

	"myapp/config"
)

func main() {
	fmt.Printf("DbName: %v\n", config.Config.DbName)
}

結果

DbName: example