一尘不染

如何在Go中处理配置

go

我是Go编程的新手,我想知道:处理Go程序的配置参数的首选方法是什么(在其他情况下,可能会使用 属性 文件或 ini 文件的东西)?


阅读 207

收藏
2020-07-02

共1个答案

一尘不染

JSON格式为我工作得很好。标准库提供了编写缩进数据结构的方法,因此可读性很强。

另请参阅此golang-nuts线程

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]
2020-07-02