我有一个GO struct ,定义如下:

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

我想知道如何才能启动这个 struct .我试过:

Record{events.APIGatewayProxyRequest: {}}

但它给了我一个错误:invalid field name events.APIGatewayProxyRequest in struct literal.似乎包括包名在内的名称不能用作 struct 中的键名.启动它的正确方式是什么?

推荐答案

将类型嵌入到 struct 中时,封闭的 struct 具有一个与没有包 Select 器的嵌入类型的类型名称相同的字段名.所以:

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

初始化的右侧是该类型的文字,因此您使用完整的类型名称(带有 Select 符).

Go相关问答推荐

Kafka消费者在需要时不会暂停

禁用Golang中的终端

在nixos上找不到XInput2.h头文件的包

格式化 Azure SDK 的 golang 时间

关于如何使用 Service Weaver 设置多个不同侦听器的问题

将这两个函数合二为一的惯用方法

是否可以在 hyperledger-chaincode 中使用 gRPC?如果可以,我如何避免在测试网络上调用时出错?

如何将 DirName 和 serial 添加到 X509v3 Authority Key Identifier

由于 main.go 文件中的本地包导入导致构建 docker 容器时出错

缺少签名帮助文档

如何将整数哈希细分为范围

我在 go 中制作的递归函数有什么问题?

如何使用 Go 代理状态为 OK 的预检请求?

切片到数组指针的转换

K8s 算子读取原始数据

使用不安全的指针从 [] 字符串中获取值

如何允许可转换为指针的泛型类型参数化另一种可转换为指针的泛型类型?

如何在 Prometheus 中正确检测区域和环境信息?

将函数的值作为输入参数返回给另一个

空接口与泛型接口有何不同?