// 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
}
Pourquoi cela ne fonctionne-t-il pas? Il n'a jeté aucune erreur, juste ne fonctionne pas ... Ma conjecture est quelque chose de mal avec mon type UserInfo
, mais ne peut pas trouver la bonne façon de le faire, aide, s'il vous plaît.UnmarshalMap utilisant aws-go-sdk
Cela fonctionne! Mais ne devrait pas être un avertissement ou des erreurs affichées ici? Je veux dire que les docs n'ont rien dit à ce sujet .... – FrontMage
Je me demande s'il existe un moyen pratique de choisir les valeurs d'une structure à une autre. – FrontMage
@FrontMage La raison pour laquelle les membres doivent mettre leur premier caractère en majuscule est qu'aucune bibliothèque Go d'un package différent ne peut accéder à un membre, une méthode, un type ou une valeur d'un autre package si le premier caractère n'est pas mis en majuscule. Vous verrez voir le même comportement dans toutes les bibliothèques de marshaling Go. –