编辑:尽管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
结构不喜欢我的地图数组。如何填充此结构以便可以编译?
答案 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
},
}