使用golang读取配置文件,配置文件包含多个服务器信息,每个服务器中包含服务器的ID、访问地址、用户名、密码、启动的服务,启动的服务可以存在多个,每个服务有自己的启动参数,每个服务必须包含启动的ID以及其他的参数,提供读取配置到结构体和写入结构体到i配置文件的代码以及参考配置文件
时间: 2023-02-05 09:15:33 浏览: 145
读取配置文件内容
使用 Go 读取配置文件并解析到结构体中,可以使用一些第三方库,比如 `viper` 和 `goconfig`。这些库都提供了简单易用的 API,可以轻松地从配置文件中读取数据并将其映射到 Go 中的结构体。
以下是使用 `viper` 库读取配置文件的示例代码:
```go
package main
import (
"fmt"
"github.com/spf13/viper"
)
type ServerConfig struct {
ID int
Address string
Username string
Password string
Services []struct {
ID int
Name string
Args []string
ExtraArgs map[string]interface{}
}
}
func main() {
viper.SetConfigName("config") // 配置文件名为 config.yaml
viper.SetConfigType("yaml") // 配置文件类型为 yaml
viper.AddConfigPath(".") // 添加当前目录作为配置文件搜索路径
// 读取配置文件
if err := viper.ReadInConfig(); err != nil {
panic(fmt.Errorf("Fatal error config file: %s", err))
}
var config ServerConfig
// 将配置文件中的数据绑定到结构体
if err := viper.Unmarshal(&config); err != nil {
panic(fmt.Errorf("Fatal error config file: %s", err))
}
fmt.Println(config)
}
```
示例配置文件(YAML 格式):
```yaml
id: 1
address: "localhost"
username: "admin"
password: "123456"
services:
- id: 1
name: "service1"
args: ["arg1", "arg2"]
extra_args:
key1: "value1"
key2: 123
- id: 2
name: "service2"
args: ["arg3"]
extra_args:
key3: true
```
使用 Go 将结构体写入
阅读全文