我想知道这种逻辑在Golang是否可行.我有一个yaml文件:
initSteps:
- "pip install --upgrade pip"
- "python3 --version"
buildSteps:
- "pip install ."
runProcess:
- "python3 test.py"
我用gopkg.in/yaml.v3
来迭代这些步骤.我在下面有一个函数,它将指令放入如下 map 中:
func init() {
// add map from yaml to steps
f, err := ioutil.ReadFile(devrun)
if err != nil {
panic(err)
}
steps = make(map[interface{}]interface{})
err2 := yaml.Unmarshal(f, &steps)
if err2 != nil {
panic(err2)
}
}
在my main
函数中,如果键匹配,则使用此函数迭代值:
for k, v := range steps {
if k == "initSteps" {
s := reflect.ValueOf(v)
for i := 0; i < s.Len(); i++ {
singleVertex := s.Index(i).Elem()
fmt.Println(singleVertex)
}
}
}
我想看看是否有可能从steps
开始迭代该键,以及如何将其添加到中.如果k.initSteps
,我可以这样做:yaml文件中的键总是相同的,唯一改变的是它们下面的步骤.