我对读取YAML文件有问题.我想是文件 struct 有问题,但我想不出是什么.

YAML file:

conf:
  hits:5
  time:5000000

code:

type conf struct {
    hits int64 `yaml:"hits"`
    time int64 `yaml:"time"`
}


func (c *conf) getConf() *conf {

    yamlFile, err := ioutil.ReadFile("conf.yaml")
    if err != nil {
        log.Printf("yamlFile.Get err   #%v ", err)
    }
    err = yaml.Unmarshal(yamlFile, c)
    if err != nil {
        log.Fatalf("Unmarshal: %v", err)
    }

    return c
}

推荐答案

你的yaml文件必须是

hits: 5
time: 5000000

您的代码应该如下所示:

package main

import (
    "fmt"
    "gopkg.in/yaml.v2"
    "io/ioutil"
    "log"
)

type conf struct {
    Hits int64 `yaml:"hits"`
    Time int64 `yaml:"time"`
}

func (c *conf) getConf() *conf {

    yamlFile, err := ioutil.ReadFile("conf.yaml")
    if err != nil {
        log.Printf("yamlFile.Get err   #%v ", err)
    }
    err = yaml.Unmarshal(yamlFile, c)
    if err != nil {
        log.Fatalf("Unmarshal: %v", err)
    }

    return c
}

func main() {
    var c conf
    c.getConf()

    fmt.Println(c)
}

主要错误是 struct 的大写字母.

Go相关问答推荐

为什么使用append时Go切片的初始容量会随着int32和int64类型的不同而变化?

T的Golang通用切片,其中 *T实现接口

如果添加构建标签,gopls将停止工作

是不是有什么原因导致`Strings.EqualFold`不先进行长度比较?

go grpc:无法导入github.com/golang/protobuf/proto(没有所需的模块提供包github.com/gorang/protobuf-proto)

我可以在Golang中的另一个类型参数的基础上约束一个类型的参数吗?

JWT 如何解析声明有效性和错误?

当我使用 CircleCI 构建 Go Image 时,我得到runtime/cgo: pthread_create failed: Operation not allowed

使用goroutines在Golang中验证 struct

错误!在为 age-viewer-go 运行 wails dev 或 wails build 命令时

如果值为 false,gRPC 不返回布尔值

如何将元素从一个切片移动到另一个切片

接受通道和切片的通用函数

如何根据 Go 中第二次出现的分隔符拆分字符串?

是否可以使用按位运算在随机 unicode 字符串中找到重复字符?

Go 使用 struct 作为接口而不实现所有方法

在 Golang 中使用 OR 条件验证 struct 的两个字段

将 Simple Go Web 应用程序部署到 Elastic Beanstalk

GOLANG 如何使用 http.FileServer 从模板目录加载某个 html 文件

在 go (1.18) 的泛型上实现多态的最佳方法是什么?