如何使用名称中包含包名的嵌套结构体初始化go结构体

6kkfgxo0  于 2023-02-17  发布在  Go
关注(0)|答案(1)|浏览(125)

我有一个go结构体,定义如下:

type Record struct {
    events.APIGatewayProxyRequest          `json:",omitempty"`
    events.APIGatewayWebsocketProxyRequest `json:",omitempty"` //nolint:all
    events.SQSEvent                        `json:",omitempty"`
}

我想知道如何启动这个结构。我试过了:

Record{events.APIGatewayProxyRequest: {}}

但它给了我一个错误:invalid field name events.APIGatewayProxyRequest in struct literal .似乎包含包名的名称不能作为结构体中的键名,正确的初始化方法是什么?

kxe2p93d

kxe2p93d1#

当你把一个类型嵌入到一个结构体中时,封闭的结构体有一个字段名,这个字段名与不带包选择器的嵌入类型的类型名相同。

event:=Record{
  APIGatewayProxyRequest: events.APIGatewayProxyRequest{ ... },
}

初始化的右边是该类型的文本,因此使用完整的类型名(带有选择器)。

相关问题