Редактировать : Хотя ошибка компиляции в Отсутствует тип в составном литерале такая же, как в моем вопросе, они были достаточно разными по составу, чтобы я не мог понять, как я буду применить решение к моей программе, следовательно, создание этого вопроса.
Я новичок в работе, и я пытаюсь написать тест для функции, которую, как я проверял, можно успешно назвать следующим образом:
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
не любит мой массив карт. Как я могу заполнить эту структуру, чтобы она скомпилировалась?