Golang Go语言中关于读取 yaml
Golang Go语言中关于读取 yaml
本人初学者,想问下 go 读取 yaml 文件后能否像 python 一样直接按字典那样引用? 比如在 python 中,直接读入转换成字典后就可以 dict[‘global’][‘aa’] 引用
而 go 中,make 新建字典(map[string]interface{})后,只可以引用第一层,引用到第二层好像就变成字符串了 dict['global']可以,dict['global']['aa']就报错了。参考了下 prometheus 的代码,是要定义 struct 和 yaml 中的格式一模一样,觉得这样太麻烦了,所以想问下能否像 python 那样?
更多关于Golang Go语言中关于读取 yaml的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Golang Go语言中关于读取 yaml的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Golang中读取YAML文件是一个常见的任务,特别是在配置管理和数据序列化方面。Go语言标准库并没有直接提供YAML的解析功能,但可以使用第三方库,如gopkg.in/yaml.v2
,它非常流行且功能强大。
以下是一个基本的示例,展示如何使用yaml.v2
库读取YAML文件:
-
安装yaml.v2库:
go get gopkg.in/yaml.v2
-
定义数据结构: 根据你的YAML文件内容,定义一个与之匹配的结构体。例如,如果你的YAML文件包含以下数据:
server: port: 8080 host: localhost
则定义一个结构体:
type Config struct { Server struct { Port int `yaml:"port"` Host string `yaml:"host"` } `yaml:"server"` }
-
读取并解析YAML文件:
package main import ( "fmt" "gopkg.in/yaml.v2" "io/ioutil" "log" ) func main() { data, err := ioutil.ReadFile("config.yaml") if err != nil { log.Fatalf("error: %v", err) } var config Config err = yaml.Unmarshal(data, &config) if err != nil { log.Fatalf("error: %v", err) } fmt.Printf("Server Port: %d, Host: %s\n", config.Server.Port, config.Server.Host) }
这个示例展示了如何从YAML文件读取配置并解析到Go结构体中。记得根据你的实际YAML文件内容调整结构体定义。