如何使用 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"),
}
当我尝试使用 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"),
}