Я пытаюсь разобрать этот yaml и хочу получить values
из записи run
(test1 или test2) без успеха, вот мой рабочий пример.
im немного получитьпотерян с картой внутри карты :(, это заданный yaml, который я могу изменить ...
любая идея, как я мог получить эти значения
package main
import (
"fmt"
"log"
"gopkg.in/yaml.v2"
)
var runContent = []byte(`
version: "3.2"
run-parameters:
before:
run-parameters:
run: test1
after:
run-parameters:
run: test2
`)
type FTD struct {
Version string `yaml:"version,omitempty"`
BuildParams *RunParams `yaml:"run-parameters,omitempty"`
}
type RunParams struct {
BeforeExec map[string]interface{} `yaml:"before,omitempty"`
AfterExec map[string]interface{} `yaml:"after,omitempty"`
}
func main() {
runners := &FTD{}
// parse mta yaml
err := yaml.Unmarshal(runContent, runners)
if err != nil {
log.Fatalf("Error : %v", err)
}
for k, v := range runners.BuildParams.BeforeExec {
fmt.Println(k, v.(interface{}))
}
}
Это рабочий пример https://play.golang.org/p/qTqUJy3md0c
также я пытался с
это работает
run := runners.BuildParams.BeforeExec["run-parameters"].(map[interface{}]interface{})["run"]
fmt.Println("run: ", run)
я пробовал это, что работает, но что происходит, если значение run
пустоили нет записи вообще, это вызовет дамп как мне это преодолеть?