Создание структуры, содержащей типы списков в go - PullRequest
0 голосов
/ 02 января 2019

Я создал структуру, эта структура содержит два типа списка.Когда я пытаюсь создать экземпляр своей структуры, я получаю сообщение об ошибке

cannot use list.New() (type *list.List) as type list.List in field value

Я использую игровую площадку golang

Структура

type myStruct struct {
    name string
    messages list.List
    users list.List
    lastUsed time.Time
}

Создание структуры

var myVar = myStruct{"hello", list.New(), list.New(), time.Now()}

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Вы создаете неправильную структуру, потому что go, согласно методу list package New(), возвращает тип указателя списка, и вы создали list в структуре без указателя.

func New() *List

Итак, согласно документу, вам нужно создать структуру, как показано ниже:

type myStruct struct {
    name string
    messages *list.List
    users *list.List
    lastUsed time.Time
}

Игровая площадка Go

0 голосов
/ 02 января 2019

list.New () возвращает указатель *List, а myStruct объявляет свои поля как List.

func New () * Список

сообщенийи пользователи должны быть * list.List

type myStruct struct {
    name string
    messages *list.List
    users *list.List
    lastUsed time.Time
}

Другой подход в соответствии с вашими потребностями, вы можете просто инициализировать структуру, как показано ниже:

var myVar = myStruct{"hello", *list.New(), *list.New(), time.Now()}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...