“组合文字中的缺少类型”用于结构中的地图的匿名列表

时间:2019-03-19 01:07:26

标签: go

编辑:尽管Missing type in composite literal中的编译错误与我的问题相同,但它们的构成足以使我不理解如何将解决方案应用于我的问题程序,因此创建了这个问题。

我是新手,我正尝试为已验证可以成功调用的功能编写测试,如下所示:

func main() {

    items := []map[string]int{
        map[string]int{
            "value": 100,
            "weight": 5,
        },
        map[string]int{
            "value": 90,
            "weight": 2,
        },
        map[string]int{
            "value": 80,
            "weight": 2,
        },
    }
    fmt.Println(KnapSack(items, 0, 6))
}

为方便起见,使用此模板(由我的IDE生成):

func TestKnapSack(t *testing.T) {
    type args struct {
        items            []map[string]int
        current_index    int
        remaining_weight int
    }
    tests := []struct {
        name string
        args args
        want int
    }{
        {
            "Only test", // name of test
            {
                {   // items
                    map[string]int{
                        "value": 100,
                        "weight": 5,
                    },
                    map[string]int{
                        "value": 90,
                        "weight": 2,
                    },
                    map[string]int{
                        "value": 80,
                        "weight": 2,
                    },
                },
                0, // current_index
                4, // remaining_weight
            },
            170, // want
        },
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            if got := KnapSack(tt.args.items, tt.args.current_index, tt.args.remaining_weight); got != tt.want {
                t.Errorf("KnapSack() = %v, want %v", got, tt.want)
            }
        })
    }
}

args结构不喜欢我的地图数组。如何填充此结构以便可以编译?

1 个答案:

答案 0 :(得分:2)

似乎您错过了args[]map[string]int的类型

    tests := []struct {
        name string
        args args
        want int
    }{
        {
            "Only test", // name of test
            args{
                []map[string]int{   // items
                    map[string]int{
                        "value": 100,
                        "weight": 5,
                    },
                    map[string]int{
                        "value": 90,
                        "weight": 2,
                    },
                    map[string]int{
                        "value": 80,
                        "weight": 2,
                    },
                },
                0, // current_index
                4, // remaining_weight
            },
            170, // want
        },
    }