GOOGLE ADS

понедельник, 11 апреля 2022 г.

Получение экземпляра структуры из списков перехода

У меня есть структура в go, которая:

type AcceptMsg struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Rnd *Round `protobuf:"bytes,1,opt,name=rnd,proto3" json:"rnd,omitempty"`
Slot *Slot `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"`
Val *Value `protobuf:"bytes,3,opt,name=val,proto3" json:"val,omitempty"`
}

Я добавил экземпляры из этой структуры в acceptMsgQueue *list.List мой вопрос: как я могу получить доступ к переменным экземпляра, когда я получаю их из списка:

for f:= p.acceptMsgQueue.Front(); f!= nil; f = f.Next() {
acceptMsg:= f.Value
}

когда я ставлю точку из acceptMsgв vscode, он не распознает его как правильный тип, и у меня нет доступа к Rndи Slotи Valкак к свойствам acceptMsg.


Решение проблемы

Из документов значение элемента списка хранится с использованием any(иначе interface{}):

type Element struct { 
Value any
}

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

acceptMsg, ok:= f.Value.(AcceptMsg) // ok==true if dynamic type is correct

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...