«Отсутствует тип в составном литерале» для анонимного списка карт в структуре - PullRequest
0 голосов
/ 19 марта 2019

Редактировать : Хотя ошибка компиляции в Отсутствует тип в составном литерале такая же, как в моем вопросе, они были достаточно разными по составу, чтобы я не мог понять, как я буду применить решение к моей программе, следовательно, создание этого вопроса.

Я новичок в работе, и я пытаюсь написать тест для функции, которую, как я проверял, можно успешно назвать следующим образом:

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 Ответ

2 голосов
/ 19 марта 2019

кажется, вам не хватает типа 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
        },
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...