我有一个结构

type clientData struct {
    msg    Message
    connId int
}
我试图像这样将其添加到Go List
l := list.New()
l.PushBack(&clientData {
    msg: Message {
       some fields
    },
    connId: 1
});

现在,如何从列表中以*clientData数据类型取回数据?我尝试了l.Front().Value,但是返回了一个接口...我很确定我不理解Go语言的编组/编组逻辑...

最佳答案

go中的集合包含一个raw types(Element.Value👉🏻空interface{})。从list获取值时,您每次必须分配类型:

l := list.New()
l.PushBack(&clientData {
    msg: Message {
       some fields
    },
    connId: 1,
})

cd, ok := l.Front().Value.(*clientData)
if !ok {
    panic(errors.New("not a client type"))
}
fmt.Println(cd.connId)

10-08 08:23