使用golang读取配置文件,配置文件支持配置多台服务器,每个服务器中包含服务器的ID、访问地址、用户名、密码、启动的服务,启动的服务可以存在多个,每个服务有自己的启动参数,每个服务必须包含启动的ID以及其他的参数,提供读取配置到结构体和写入结构体到i配置文件的代码以及参考配置文件
时间: 2023-02-05 21:38:19 浏览: 93
在 Go 中,你可以使用第三方库来读取和写入配置文件。其中一个流行的库是 `viper`。
下面是一个例子,展示了如何使用 `viper` 读取配置文件,并将其转换为结构体:
```go
package main
import (
"fmt"
"github.com/spf13/viper"
)
type Server struct {
ID string
Address string
Username string
Password string
Services []Service
}
type Service struct {
ID string
Name string
Args []string
Disabled bool
}
func main() {
// 读取配置文件
viper.SetConfigName("config") // 设置配置文件名 (without extension)
viper.AddConfigPath(".") // 搜索配置文件的路径
err := viper.ReadInConfig() // 读取配置文件
if err != nil {
panic(fmt.Errorf("Fatal error config file: %s", err))
}
// 将配置文件转换为结构体
var servers []Server
err = viper.Unmarshal(&servers)
if err != nil {
panic(fmt.Errorf("Fatal error unmarshalling config: %s", err))
}
// 输出配置
fmt.Println(servers)
}
```
下面是参考配置文件的例子,使用 YAML 格式:
```yaml
---
- ID: "server1"
Address: "example.com"
Username: "user1"
Password: "pass1"
Services:
- ID: "service1"
Name: "service1name"
Args: ["arg1", "arg2"]
Disabled: false
- ID: "service2"
Name: "service2name"
Args: ["arg3", "arg4"]
Disabled: true
- ID: "server2"
Address: "example.com"
Username: "user2"
Password: "pass2"
Services:
- ID: "service3"
Name: "service3name"
Args: ["arg5", "arg6"]
Disabled: false
```
如果你想将结构体
阅读全文