下面是我为你准备的 “golang读取各种配置文件(ini、json、yaml)” 攻略:
标准库介绍
Go语言标准库提供了一些简便的方法来读取和解析多种配置文件格式,主要包括:
- “encoding/json” 包:用于读取和解析JSON格式的配置文件;
- “gopkg.in/yaml.v2” 包:用于读取和解析YAML格式的配置文件;
- “github.com/go-ini/ini” 包:用于读取和解析INI格式的配置文件。
接下来我们将分别介绍这三个库的使用方法。
JSON格式的配置文件
使用标准库中的 “encoding/json” 包可以轻松地读取和解析JSON格式的配置文件。示例代码如下:
package main
import (
"encoding/json"
"fmt"
"os"
)
type Config struct {
DbHost string `json:"db_host"`
DbPort int `json:"db_port"`
DbUser string `json:"db_user"`
DbPassword string `json:"db_password"`
DbName string `json:"db_name"`
}
func main() {
file, err := os.Open("config.json")
if err != nil {
panic(err)
}
defer file.Close()
decoder := json.NewDecoder(file)
config := Config{}
err = decoder.Decode(&config)
if err != nil {
panic(err)
}
fmt.Printf("DB host: %s\n", config.DbHost)
fmt.Printf("DB port: %d\n", config.DbPort)
fmt.Printf("DB user: %s\n", config.DbUser)
fmt.Printf("DB password: %s\n", config.DbPassword)
fmt.Printf("DB name: %s\n", config.DbName)
}
YAML格式的配置文件
使用 “gopkg.in/yaml.v2” 包来读取和解析YAML格式的配置文件,示例代码如下:
package main
import (
"fmt"
"io/ioutil"
"gopkg.in/yaml.v2"
)
type Config struct {
DbHost string `yaml:"db_host"`
DbPort int `yaml:"db_port"`
DbUser string `yaml:"db_user"`
DbPassword string `yaml:"db_password"`
DbName string `yaml:"db_name"`
}
func main() {
file, err := ioutil.ReadFile("config.yaml")
if err != nil {
panic(err)
}
config := Config{}
err = yaml.Unmarshal(file, &config)
if err != nil {
panic(err)
}
fmt.Printf("DB host: %s\n", config.DbHost)
fmt.Printf("DB port: %d\n", config.DbPort)
fmt.Printf("DB user: %s\n", config.DbUser)
fmt.Printf("DB password: %s\n", config.DbPassword)
fmt.Printf("DB name: %s\n", config.DbName)
}
INI格式的配置文件
使用 “github.com/go-ini/ini” 包实现读取和解析INI格式的配置文件,示例代码如下:
package main
import (
"fmt"
"github.com/go-ini/ini"
)
type Config struct {
DbHost string `ini:"db_host"`
DbPort int `ini:"db_port"`
DbUser string `ini:"db_user"`
DbPassword string `ini:"db_password"`
DbName string `ini:"db_name"`
}
func main() {
cfg, err := ini.Load("config.ini")
if err != nil {
panic(err)
}
config := Config{}
err = cfg.MapTo(&config)
if err != nil {
panic(err)
}
fmt.Printf("DB host: %s\n", config.DbHost)
fmt.Printf("DB port: %d\n", config.DbPort)
fmt.Printf("DB user: %s\n", config.DbUser)
fmt.Printf("DB password: %s\n", config.DbPassword)
fmt.Printf("DB name: %s\n", config.DbName)
}
以上就是使用Go标准库读取和解析 JSON、YAML 和 INI 格式的配置文件的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:golang读取各种配置文件(ini、json、yaml) - Python技术站