// UserInfo 用来解构返回的数据
type UserInfo struct {
gender string `dynamo:"gender"`
product string `dynamo:"product"`
id string `dynamo:"id"`
createTime int `dynamo:"create_time"`
name string `dynamo:"name"`
}
// GetUserInfoByID 根据userId在supe_user表取回用户信息
func GetUserInfoByID(userId string) (UserInfo, error) {
queryInput := dynamodb.GetItemInput{
Key: map[string]*dynamodb.AttributeValue{
"userId": {
S: aws.String(userId),
},
},
TableName: aws.String("user"),
}
result, err := dbsession.DynamoDB.GetItem(&queryInput)
userInfo := UserInfo{}
if err != nil {
fmt.Println(err.Error())
return userInfo, err
}
unmarshalMapErr := dynamodbattribute.UnmarshalMap(result.Item, &userInfo)
if unmarshalMapErr != nil {
return userInfo, err
}
fmt.Println(result.Item)
fmt.Println(userInfo.name)
return userInfo, nil
}
Warum funktioniert das nicht? Es hat keinen Fehler geworfen, einfach nicht funktioniert ... Mein Tipp ist etwas falsch mit meinem UserInfo
Typ, aber kann nicht den richtigen Weg, dies zu tun, helfen, bitte.UnmarshalMap mit aws-go-sdk
Das funktioniert! Aber sollten hier keine Warnungen oder Fehler gepostet werden? Ich meine, Docs haben nichts dazu gesagt. – FrontMage
Ich frage mich, ob es eine bequeme Möglichkeit gibt, Werte einer Struktur zu einer anderen zu wählen. – FrontMage
@FrontMage Der Grund, warum Mitglieder ihr erstes Zeichen in Großbuchstaben schreiben müssen, ist, dass keine Go-Bibliothek eines anderen Pakets auf ein Mitglied, eine Methode, einen Typ oder Wert eines anderen Pakets zugreifen kann, wenn das erste Zeichen nicht in Großbuchstaben ist. In allen Go-Marshalling-Bibliotheken wird dasselbe Verhalten angezeigt. –