当前位置: 首页 > 面试题库 >

根据值匹配数组

柯学
2023-03-14
问题内容

我正在使用以下代码来解析yaml并应将输出作为runners对象,并且该函数build应更改数据结构并根据以下结构提供输出

type Exec struct {
    NameVal string
    Executer []string
}

这是我尝试过的方法,但是我不确定如何从yaml中获取的值 替换 函数运行器中 的硬代码值

return []Exec{
    {"#mytest",
        []string{"spawn child process", "build", "gulp"}},
}

与来自 parsed runner

这就是我尝试过的所有想法,该怎么做?

package main

import (
    "log"

    "gopkg.in/yaml.v2"
)

var runContent = []byte(`
api_ver: 1
runners:
  - name: function1
    data: mytest
    type:
    - command: spawn child process
    - command: build
    - command: gulp
  - name: function2
    data: mytest2
    type:
    - command: webpack
  - name: function3
    data: mytest3
    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)
    }

    //Here Im calling to the function with the parsed structured data  which need to return the list of Exec
    build("function1", runners)

}

type Exec struct {
    NameVal  string
    Executer []string
}

func build(name string, runners Result) []Exec {

    for _, runner := range runners.Runners {

        if name == runner.Name {
            return []Exec{
                // this just for example, nameVal and Command
                {"# mytest",
                    []string{"spawn child process", "build", "gulp"}},
            }
        }
    }
}

问题答案:

将runners对象的名称分配给名称的struct Exec字段,并[]string使用与名称匹配的函数命令将命令列表附加到type字段:

func build(name string, runners Result) []Exec {
    exec := make([]Exec, len(runners.Runners))
    for i, runner := range runners.Runners {

        if name == runner.Name {
            exec[i].NameVal = runner.Name
            for _, cmd := range runner.Type {
                exec[i].Executer = append(exec[i].Executer, cmd.Command)
            }
            fmt.Printf("%+v", exec)
            return exec
        }
    }
    return exec
}

操场上的工作代码



 类似资料:
  • 我是新来的放心 我有一个这样的json响应 String type="men"使用放心,我需要检查类型值men与能力数组值 和 我使用了下面的代码。但它不起作用,任何其他方式?? 正在获取错误

  • 成品尺寸:99.00_99.00_99.00;展开尺寸:411.00_327.00;印刷:双面印刷;正面印颜色:多色 CMYK;反面印刷颜色:单色_青色;表面处理:哑胶;背面处理:无;预折:否;1;粘合:自动粘1处;纸张材质:单铜纸_350;包装服务:盒子扎皮筋;外箱套蛇皮袋:否;

  • 子组件匹配父组件传来的sn值 在mounted中调用 绑定数据的标签 父组件传值 打印输出 已经成功匹配了,但是sn值没有改为空字符

  • 本文向大家介绍根据MySQL中其他两个列的值来匹配列的值,包括了根据MySQL中其他两个列的值来匹配列的值的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是根据ID和MatchID显示FirstName的查询- 这将产生以下输出-

  • 我要提前道歉——我知道这个问题可能已经在其他地方得到了解答,但是我似乎无法找到我需要的答案,也无法设法让我找到的其他代码适应我的需要。 我有一个数据框: 我想生成一个一个和两个之间COUNT值之差的数据帧,每个FILE都有一行,即。 我确信我应该能够相当容易地使用基础R或Plyr做到这一点,但我有点卡住了。任何人都可以建议一个好方法来做到这一点,也许在Plyr上有很好的教程,可能会帮助我解决将来的

  • 问题内容: 我有未排序的索引数组: 我也有一个相同长度的值数组: 我有期望值为零的数组: 现在,我想根据v在d中的索引将其添加到元素中。 如果我用普通的python做,我会这样: 这是丑陋且效率低下的。我该如何更改? 问题答案: 我们可以使用据称对这种累积加权计数非常有效的方法,所以这里有一个- 或者,使用输入参数,对于一般情况,当可以是任何数组,而我们想添加到该数组中时, 运行时测试 本节将本文