第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法將 yaml 節(jié)點(diǎn)添加到 golang 中現(xiàn)有的 yaml 文檔?

有沒有辦法將 yaml 節(jié)點(diǎn)添加到 golang 中現(xiàn)有的 yaml 文檔?

Go
動漫人物 2023-02-21 16:31:21
我正在閱讀帶有 goyaml lib 的 yaml 文件。如果要添加的密鑰不存在,我打算修改它的一些條目并添加一個條目。例如原始yamlroot:   entry1: val11 個模組和 1 個添加目標(biāo) yamlroot:  entry1: valUpdated  entry2: newkey added我找不到任何可以讓我向 yaml 添加節(jié)點(diǎn)的 yaml 庫。
查看完整描述

1 回答

?
MYYA

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個贊

如果您解組為: ,您可以使用go-yamlyaml.Node執(zhí)行此操作:

package main


import (

    "os"


    "gopkg.in/yaml.v3"

)


var input = []byte(`root:

  entry1: val1`)


func main() {

    var document yaml.Node

    if err := yaml.Unmarshal(input, &document); err != nil {

        panic(err)

    }

    data := document.Content[0]

    var rootVal *yaml.Node

    for i := 0; i < len(data.Content); i += 2 {

        node := data.Content[i]

        if node.Kind == yaml.ScalarNode && node.Value == "root" {

            rootVal = data.Content[i+1]

            break

        }

    }

    if rootVal == nil {

        panic("root key missing")

    }


    found := false

    for i := 0; i < len(rootVal.Content); i += 2 {

        node := rootVal.Content[i]

        if node.Kind != yaml.ScalarNode {

            continue

        }

        switch node.Value {

        case "entry1":

            rootVal.Content[i+1].SetString("valUpdated")

        case "entry2":

            found = true

        }

    }

    if !found {

        var key, value yaml.Node

        key.SetString("entry2")

        value.SetString("newkey added")

        rootVal.Content = append(rootVal.Content, &key, &value)

    }

    out, err := yaml.Marshal(data)

    if err != nil {

        panic(err)

    }

    os.Stdout.Write(out)

}

輸出:


root:

    entry1: valUpdated

    entry2: newkey added

游樂場鏈接

Unmarshal獲取一個以根節(jié)點(diǎn)作為唯一內(nèi)容節(jié)點(diǎn)的文檔節(jié)點(diǎn)。Marshal期望根節(jié)點(diǎn)作為數(shù)據(jù),所以你輸入data而不是document輸入它。我不太確定為什么 API 是這樣的。


查看完整回答
反對 回復(fù) 2023-02-21
  • 1 回答
  • 0 關(guān)注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號