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

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

解析地圖的 yaml 錯誤

解析地圖的 yaml 錯誤

Go
繁花不似錦 2023-03-21 15:41:39
我有以下程序,我需要在其中解析具有以下結(jié)構(gòu)的 yamlhttps://codebeautify.org/yaml-validator/cbabd352 這是有效的 yaml,我使用 byte 使其更簡單,也許在復(fù)制粘貼到問題期間更改了縮進,但您可以在鏈接中看到 yaml 有效yaml 有一個 api_version 和跑步者,對于每個跑步者(鍵是名稱)我有一個命令列表,我需要打印這些命令,function1我function4在這里做錯了什么?package mainimport (    "fmt"    "log"    "gopkg.in/yaml.v2")var runContent = []byte(`api_ver: 1runners: - name: function1   type:    - command: spawn child process    - command: build    - command: gulp - name: function2   type:    - command: run function 1 - name: function3   type:    - command: ruby build - name: function4   type:    - command: go build`)type Result struct {    Version string    `yaml:"api_ver"`    Runners []Runners `yaml:"runners"`}type Runners struct {    Name string    `yaml:"name"`    Type []Command `yaml:"type"`}type Command struct {    Command string `yaml:"command"`}func main() {    var runners []Result    err := yaml.Unmarshal(runContent, &runners)    if err != nil {        log.Fatalf("Error : %v", err)    }    fmt.Printf("%+v", runners[0])}我得到的錯誤cannot unmarshal !!map into []main.Result我無法更改 yaml,它應(yīng)該完全像這樣https://codebeautify.org/yaml-validator/cbabd352這是代碼 https://play.golang.org/p/zidjOA6-gc7
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經(jīng)驗 獲得超3個贊

您提供的 yaml 包含令牌錯誤。在此處驗證代碼中使用的 yaml https://codebeautify.org/yaml-validator/cbaabb32

之后創(chuàng)建結(jié)構(gòu)類型結(jié)果的變量而不是數(shù)組。因為您使用的 yaml 正在創(chuàng)建一個帶有 Runners 數(shù)組和 api_version 的結(jié)構(gòu)。

var runners []Result

應(yīng)該

var runners Result

因為因為結(jié)構(gòu)不是切片。獲取 yaml 中使用的函數(shù)名稱的命令列表。您需要遍歷 runners 數(shù)組以找到函數(shù)名稱并獲取該函數(shù)的命令值。下面是工作代碼:

package main


import (

    "fmt"

    "log"


    "gopkg.in/yaml.v2"

)


var runContent = []byte(`

api_ver: 1

runners:

  - name: function1

    type:

    - command: spawn child process

    - command: build

    - command: gulp

  - name: function2

    type:

    - command: run function 1

    - name: function3

    type:

    - command: ruby build

  - name: function4

    type:

  - command: go build

`)


type Result struct {

    Version string    `yaml:"api_ver"`

    Runners []Runners `yaml:"runners"`

}


type Runners struct {

    Name string    `yaml:"name"`

    Type []Command `yaml:"type"`

}


type Command struct {

    Command string `yaml:"command"`

}


func main() {


    var runners Result

    // parse mta yaml

    err := yaml.Unmarshal(runContent, &runners)

    if err != nil {

        log.Fatalf("Error : %v", err)

    }

    commandList := getCommandList("function1", runners.Runners)

    fmt.Printf("%+v", commandList)

}


func getCommandList(name string, runners []Runners) []Command {

    var commandList []Command

    for _, value := range runners {

        if value.Name == name {

            commandList = value.Type

        }

    }

    return commandList

}

游樂場示例


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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