関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。忘れないうちにとりあえずメモメモ。。。
INIファイルを操作する必要があったので
をつかって、操作してみたメモです。
使いやすいですねー。このライブラリ。
サンプル
READ
package main import ( "fmt" "gopkg.in/ini.v1" ) func main() { if err := run(); err != nil { panic(err) } } func run() error { // // iniファイル読み込み // var ( cfg *ini.File err error ) cfg, err = ini.Load("config.ini") if err != nil { return err } // // セクション取得 // var ( secGeneral *ini.Section secDatabase *ini.Section secLogging *ini.Section ) secGeneral = cfg.Section("General") secDatabase = cfg.Section("Database") secLogging = cfg.Section("Logging") // // キー取得 // var ( keyVersion *ini.Key keyHost *ini.Key keyLevel *ini.Key ) keyVersion = secGeneral.Key("Version") keyHost = secDatabase.Key("Host") keyLevel = secLogging.Key("Level") // // 値取得 // *ini.Keyにいろいろな型で値を取得するメソッドが用意されている // fmt.Printf("Version=%s\n", keyVersion.String()) fmt.Printf("Host=%s\n", keyHost.MustString("unknown")) fmt.Printf("Level=%s (%s)\n", keyLevel.Value(), keyLevel.Comment) return nil /* $ task task: [default] go run main.go Version=1.0.0 Host=localhost Level=DEBUG (; ログレベル) */ }
https://github.com/devlights/try-golang/tree/main/examples/singleapp/ini_file/read
WRITE
package main import "gopkg.in/ini.v1" func main() { if err := run(); err != nil { panic(err) } } func run() error { // // 空のiniファイルを用意 // cfg := ini.Empty() // // セクションの追加 // var ( secGeneral *ini.Section secDatabase *ini.Section secLogger *ini.Section ) secGeneral = cfg.Section("General") secDatabase = cfg.Section("Database") secLogger = cfg.Section("Logging") // // キーと値の追加 // secGeneral.NewKey("AppName", "MyApplication") secGeneral.NewKey("Version", "1.0.0") secGeneral.NewKey("License", "MIT") secDatabase.NewKey("Host", "localhost") secDatabase.NewKey("User", "root") secDatabase.NewKey("Password", "") secDatabase.NewKey("DatabaseName", "my_database") secLogger.NewKey("Level", "DEBUG") key, _ := secLogger.NewKey("LogFile", "/var/log/myapp.log") key.Comment = "ログファイル" // // 書き出し // if err := cfg.SaveTo("config.ini"); err != nil { return err } return nil /* $ task task: [default] go run main.go task: [default] cat config.ini [General] AppName = MyApplication Version = 1.0.0 License = MIT [Database] Host = localhost User = root Password = DatabaseName = my_database [Logging] Level = DEBUG ; ログファイル LogFile = /var/log/myapp.log */ }
https://github.com/devlights/try-golang/tree/main/examples/singleapp/ini_file/write
APPEND
package main import "gopkg.in/ini.v1" func main() { if err := run(); err != nil { panic(err) } } func run() error { // // iniファイル読み込み // var ( cfg *ini.File err error ) cfg, err = ini.Load("config.ini") if err != nil { return err } // // 既存のキーの値を変更 // cfg.Section("Database").Key("User").SetValue("gitpod") // // 新しいセクションとキーの追加 // newSection := cfg.Section("NewSection") newSection.Key("NewKey").SetValue("NewValue") // // 書き出し // if err := cfg.SaveTo("config-updated.ini"); err != nil { return err } return nil /* $ task task: [default] go run main.go task: [default] diff -u config.ini config-updated.ini --- config.ini 2024-01-17 05:18:00.670661597 +0000 +++ config-updated.ini 2024-01-17 05:19:09.686594430 +0000 @@ -5,7 +5,7 @@ [Database] Host = localhost -User = root +User = gitpod Password = DatabaseName = my_database @@ -14,3 +14,6 @@ Level = DEBUG ; ログファイル LogFile = /var/log/myapp.log + +[NewSection] +NewKey = NewValue */ }
https://github.com/devlights/try-golang/tree/main/examples/singleapp/ini_file/append
参考情報
Goのおすすめ書籍
上の書籍の日本語版が下です。
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。