首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法读取和打印yaml文件数据

无法读取和打印yaml文件数据
EN

Stack Overflow用户
提问于 2021-07-27 07:38:01
回答 2查看 333关注 0票数 0

语言: Go

我正在练习如何读取和打印yaml文件数据,但无法这样做,代码正在通过。有人能帮忙吗?

Yaml文件:

代码语言:javascript
运行
复制
ENV:
 foo: test
 boo: test-123-tet222

代码:

代码语言:javascript
运行
复制
package test

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

type config struct {
    foo string 
    boo string 
}


func TestTerraformAzureCosmosDBExample(t *testing.T) {
 yFile, err := ioutil.ReadFile("config.yaml")
 if err != nil {
     log.Fatal(err)
 }

 data := make(map[string]config)

 err2 := yaml.Unmarshal(yFile, &data)
 if err2 != nil {
      log.Fatal(err2)
 }
 for k, v := range data {
      fmt.Printf(k, v)
 }
}

预期输出:

代码语言:javascript
运行
复制
 foo: test
 boo: test-123-tet222

实际输出:

代码语言:javascript
运行
复制
C:\foo\boo>go test -v
=== RUN   TestTerraformAzureCosmosDBExample
ENV%!(EXTRA test.config={ })--- PASS: TestTerraformAzureCosmosDBExample (0.00s)
PASS
ok      foobo_test   0.179s
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-27 07:49:53

您的config结构缺少yaml标记。按以下方式编辑它。另外,Printf方法需要一个格式化程序字符串,也可以按如下方式编辑。

代码语言:javascript
运行
复制
import (
    "fmt"
    "gopkg.in/yaml.v3"
    "io/ioutil"
    "log"
    "testing"
)

type config struct {
    Foo string `yaml:"foo"`
    Boo string `yaml:"boo"`
}


func TestTerraformAzureCosmosDBExample(t *testing.T) {
    yFile, err := ioutil.ReadFile("config.yaml")
    if err != nil {
        log.Fatal(err)
    }

    data := make(map[string]config)

    err = yaml.Unmarshal(yFile, &data)
    if err != nil {
        log.Fatal(err)
    }
    for k, v := range data {
        fmt.Printf(`key: %v, value: %v`, k,v)
    }
}

给出输出:

代码语言:javascript
运行
复制
key: ENV, value: {test test-123-tet222}--- PASS: TestTerraformAzureCosmosDBExample (0.00s)
票数 2
EN

Stack Overflow用户

发布于 2021-07-27 07:45:08

您正在迭代data,这是一个map[string]config

该对象有一个键,ENV,该键的值是您要查找的config对象。

试着:

代码语言:javascript
运行
复制
fmt.Printf("Foo: %S\n", data["ENV"].Foo)
fmt.Printf("Boo: %S\n", data["ENV"].Boo)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68540748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档