#go
#Вперед
Вопрос:
Пытаясь объединить несколько срезов с помощью переменных, я получаю ошибку: не удается инициализировать 2 переменные с 1 значением
Как мне вызвать эту функцию объединения?
Вот код:
func Combine(ss ...[]string) []string {
mp := map[string]bool{}
for _, s := range ss {
for _, v := range s {
if v != "" {
if _, ok := mp[v]; !ok {
mp[v] = true
}
}
}
}
combined := []string{}
for v := range mp {
combined = append(combined, v)
}
return combined
}
tests := []struct {
caseName string
s1 []string
s2 []string
want []string
}{
{
caseName: "Test combining 2 slices",
s1: []string{"a", "b", "c", "c", ""},
s2: []string{"a", "b", "z", "z", "", "y"},
want: []string{"a", "b", "c", "y", "z"},
},
}
actual, _ := Combine(test.s1, test.s2)
Ответ №1:
Ваш формат параметров вызова variadic в порядке.
Ошибка связана с тем, что ваша функция Combine
возвращает один элемент, а не два:
// actual, _ := Combine(test.s1, test.s2) // fails as only one item is returned
actual := Combine(test.s1, test.s2)