闽公网安备 35020302035485号
.YAML 是 JSON 的超集,能够表示 JSON 所能表示的任何数据。
server: port: 8080 dbConfig: host: db-host username: admin password: admin_pwd security: sslEnabled: true truststoreLocation: ./keystore truststorePassword: changeit为了解析这个 YAML 文件,我们首先使用 go get gopkg.in/yaml.v3 命令将 YAML 包添加到我们的工作区。接着,我们创建了对应的 Go 结构体来表示配置文件中的各个部分:
// db_config.go
type DbConfig struct {
Host string `yaml:"host"`
UserName string `yaml:"username"`
Password string `yaml:"password"`
}
// security_config.go
type SecurityConfig struct {
SslEnabled bool `yaml:"sslEnabled"`
TruststoreFilePath string `yaml:"truststoreLocation"`
TruststorePwd string `yaml:"truststorePassword"`
}
// server_config.go
type ServerConfig struct {
Port string `yaml:"port"`
}
请注意,要解析的属性必须具有公共(Public)可访问性,即变量名应以大写字母开头,因为 YAML 解析器将使用反射包来解析标记和映射值。最后,我们使用 os.ReadFile 读取配置文件,然后使用 YAML API 解析文件内容,并实例化类型:yamlData, err := os.ReadFile("app_config.yml")
if err != nil {
log.Fatalf("Error reading YAML file: %v", err)
}
// 堆代码 duidaima.com
// 解析 YAML 内容并实例化类型
var serverConfig ServerConfig
err = yaml.Unmarshal(yamlData, &serverConfig)
if err != nil {
log.Fatalf("Error unmarshaling YAML file: %v", err)
}
fmt.Println("Loaded Server Config")
在这个例子中,yaml.Unmarshal 接受字节格式的 YAML 内容和用于映射值的类型引用。YAML 结构标记(yaml:<property_key>)确保了配置文件中的属性键与 Go 结构体字段之间的正确映射。