320

私はGoプログラミングが初めてで、疑問に思っています.Goプログラムの構成パラメーターを処理するための好ましい方法は何ですか(他のコンテキストでは、プロパティファイルまたはiniファイルを使用するようなもの)?

4

13 に答える 13

264

JSON形式は、私にとっては非常にうまく機能しました。標準ライブラリには、インデントされたデータ構造を記述するメソッドが用意されているため、非常に読みやすくなっています。

この golang-nuts threadも参照してください。

JSON の利点は、リストとマッピングのセマンティクス (非常に便利になる可能性があります) を提供しながら、解析が非常に簡単で、人間が読み取り可能/編集可能であることです。これは、多くの ini タイプの構成パーサーには当てはまりません。

使用例:

conf.json :

{
    "Users": ["UserA","UserB"],
    "Groups": ["GroupA"]
}

構成を読み取るプログラム

import (
    "encoding/json"
    "os"
    "fmt"
)

type Configuration struct {
    Users    []string
    Groups   []string
}

file, _ := os.Open("conf.json")
defer file.Close()
decoder := json.NewDecoder(file)
configuration := Configuration{}
err := decoder.Decode(&configuration)
if err != nil {
  fmt.Println("error:", err)
}
fmt.Println(configuration.Users) // output: [UserA, UserB]
于 2013-05-09T16:05:58.917 に答える
10

ゴンフィグを見てください

// load
config, _ := gonfig.FromJson(myJsonFile)
// read with defaults
host, _ := config.GetString("service/host", "localhost")
port, _ := config.GetInt("service/port", 80)
test, _ := config.GetBool("service/testing", false)
rate, _ := config.GetFloat("service/rate", 0.0)
// parse section into target structure
config.GetAs("service/template", &template)
于 2015-11-16T05:35:09.010 に答える
9

https://github.com/spf13/viperhttps://github.com/zpatrick/go-configは、構成ファイル用の非常に優れたライブラリです。

于 2015-11-16T21:30:26.843 に答える
7

この記事のようにtomlを使用して、Go の方法で構成ファイルを読み取る

于 2015-10-29T10:00:10.870 に答える
5

golang で簡単な ini 構成ライブラリを作成しました。

https://github.com/c4pt0r/cfg

ゴルーチンセーフで使いやすい

package cfg
import (
    "testing"
)

func TestCfg(t *testing.T) {
    c := NewCfg("test.ini")
    if err := c.Load() ; err != nil {
        t.Error(err)
    }
    c.WriteInt("hello", 42)
    c.WriteString("hello1", "World")

    v, err := c.ReadInt("hello", 0)
    if err != nil || v != 42 {
        t.Error(err)
    }

    v1, err := c.ReadString("hello1", "")
    if err != nil || v1 != "World" {
        t.Error(err)
    }

    if err := c.Save(); err != nil {
        t.Error(err)
    }
}

===================アップデート======================

最近、セクションをサポートする INI パーサーが必要になり、簡単なパッケージを作成しました。

github.com/c4pt0r/cfg

「フラグ」パッケージを使用するように INI を解析できます。

package main

import (
    "log"
    "github.com/c4pt0r/ini"
)

var conf = ini.NewConf("test.ini")

var (
    v1 = conf.String("section1", "field1", "v1")
    v2 = conf.Int("section1", "field2", 0)
)

func main() {
    conf.Parse()

    log.Println(*v1, *v2)
}
于 2014-05-07T07:48:17.917 に答える
2

私はnemoに同意し、すべてを本当に簡単にするための小さなツールを書きました。

bitbucket.org/gotamer/cfgは json 構成パッケージです

  • アプリケーションの設定項目を構造体として定義します。
  • 構造体の json 構成ファイル テンプレートは、最初の実行時に保存されます
  • 実行時の変更を構成に保存できます

例については、doc.go を参照してください。

于 2013-12-27T02:07:03.903 に答える