Gotest - нельзя использовать литерал [] int (type [] int) в качестве аргументов типа в значении поля - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь проверить основную функцию суммы с помощью теста таблицы.Вот функция:

func Sum(nums []int) int {
    sum := 0
    for _, n := range nums {
        sum += n
    }
    return sum
}

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

import (
    "testing"
)

func TestSum(t *testing.T) {

    type args struct {
        nums []int
    }
    tests := []struct {
        name string
        args args
        want int
    }{
        {"test", []int{3, 4}, 7},
        {"test", []int{3, 3}, 6},

    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            if got := Sum(tt.args.nums); got != tt.want {
                t.Errorf("Sum() = %v, want %v", got, tt.want)
            }
        })
    }
}

cannot use []int literal (type []int) as type args in field value

1 Ответ

5 голосов
/ 26 марта 2019

Это потому, что второе поле вашей анонимной структуры args, а не []nums

Вы должны инициализировать его как явно введенное значение args.

{"test", args{nums: []int{3, 4}}, 7},

Или, если вы предпочитаете структурные литералы без полей:

{"test", args{[]int{3, 4}}, 7},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...