2017-02-05 3 views
0

У меня возникают проблемы вызова функции append в GOПервый аргумент для добавления должен быть срез

type Dog struct { 
    color string 
} 

type Dogs []Dog 

Я хочу, чтобы добавить «Собака» в «Собаки».

Я попытался сделать это

Dogs = append(Dogs, Dog) 

Но я получаю эту ошибку

First argument to append must be slice; have *Dogs 

Извините, я новичок в GO.

Спасибо!

Редактировать: Кроме того, если я хочу проверить, содержит ли эта собака цвет «белый», например. Как я могу это назвать?

if Dog.color.contains("white") { 
    //then append this Dog into Dogs 
} 
+1

«Собаки» - это тип, а не переменная. – tkausl

ответ

1

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

var Dogs []Dog 
+0

Допустим, я должен использовать то, что дано, как сделать его переменной, чтобы я мог назвать его в Append? – pkmangg

+0

Вы можете создать переменную из 'type Dogs [] Dog', например:' var myDogs Dogs' – Elad

1

Как друзья говорит, что это не должно быть типа, вот пример может быть полезным:

// Create empty slice of struct pointers. 
Dogs := []*Dog{} 
// Create struct and append it to the slice. 
dog := new(Dog) 
dog.color = "black" 
Dogs = append(Dogs, dog) 
Смежные вопросы