如何使用 aws sdk go v2 初始化 PutItemInput 结构以在 DynamoDb 上执行 PutItem 而不会出现此错误?

How do I initialize PutItemInput struct using aws sdk go v2 to execute a PutItem on DynamoDb without this error?

当我尝试使用 aws go sdk v2 初始化输入变量以在 DynamoDB table 上执行 PutItem 时,出现错误 - 复合中缺少类型文字。我在这里查看了结构 PutItemInput - https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/dynamodb@v1.2.2#PutItemInput 我不明白如何摆脱这个错误? id 是 mytable

中的分区键
input := &dynamodb.PutItemInput{
            TableName: aws.String("mytable"),
            Item: map[string]types.AttributeValue{
                "id": {
                    N: aws.String(a.ID),
                },
            },
        }

types.AttributeValue 是一个 interface.It 应该是下面这样的东西

input := &dynamodb.PutItemInput{
        TableName: aws.String("mytable"),
        Item: map[string]*types.AttributeValue{
            "id": {
                N: aws.String(a.ID),
            },
        },
    }
Item: map[string]types.AttributeValue{
    "id": &types.AttributeValueMemberN{a.ID},
}

types.AttributeValue 是接口类型。在构造映射或界面切片时,您不能从复合文字中省略单个元素的 concrete 类型。您需要告诉编译器您希望元素具有什么 具体 类型。

AWS SDK Go V2

输入aStruct结构{
Id int64
Name string
}

var a = aStruct {
Id: 123
Name: "DummyName"
}

itemMap := 地图[字符串]types.AttributeValue{
"Id": &types.AttributeValueMemberN{Value: strconv.Itoa(int(a.Id))},
"Name": &types.AttributeValueMemberS{Value: a.Name},
}

itemInput := &dynamodb.PutItemInput{
Item: itemMap,
TableName: aws.String("mytable"),
}