使用golang读取ini的配置文件,配置文件包含多个服务器信息,每个服务器中包含服务器的ID、访问地址、用户名、密码、启动的服务,启动的服务可以存在多个,每个服务有自己的启动参数,每个服务必须包含启动的ID以及其他的参数,提供读取ini配置到结构体和写入结构体到ini文件的代码以及ini参考文件
时间: 2023-02-05 12:13:27 浏览: 145
使用 golang 读取 ini 配置文件可以使用第三方库来实现。下面给出一个使用 `github.com/go-ini/ini` 库来读取 ini 配置文件的代码示例:
```
package main
import (
"fmt"
"github.com/go-ini/ini"
)
type Server struct {
ID int
Address string
User string
Password string
}
type Service struct {
ID int
Name string
Args []string
}
type Config struct {
Servers []Server
Services []Service
}
func main() {
cfg, err := ini.Load("config.ini")
if err != nil {
fmt.Printf("Fail to read file: %v", err)
return
}
var config Config
err = cfg.MapTo(&config)
if err != nil {
fmt.Printf("Fail to map config: %v", err)
return
}
// 输出读取的配置信息
fmt.Println(config)
}
```
ini 配置文件参考如下:
```
[server]
ID = 1
Address = "127.0.0.1"
User = "root"
Password = "123456"
[server]
ID = 2
Address = "192.168.0.1"
User = "admin"
Password = "abcdef"
[service]
ID = 1
Name = "service1"
Args = "arg1"
[service]
ID = 1
Name = "service1"
Args = "arg2"
[service]
ID = 2
Name = "service2"
Args = "arg1"
```
如果要写入结构体到 ini 文件,可以使用如下代码:
```
cfg := ini.Empty()
err := cfg.ReflectFrom(&config)
if err != nil {
fmt.Printf("Fail to map config: %v", err)
return
}
err = cfg.SaveTo("config.ini")
if err != nil {
fmt.Printf("Fail to save config: %v", err)
return
}
```
希望这些代码能够帮助你。
阅读全文