为了账号安全,请及时绑定邮箱和手机立即绑定

数据存储:获取时无效的实体类型

数据存储:获取时无效的实体类型

Go
慕仙森 2021-09-27 10:02:31
嘿,我试图通过传递 id 来获取实体,但看起来我得到了一个nill 指针, 我试图以几种方式初始化实体,但结果是一样的。我正在尝试尽可能多地创建我的服务器,就像这个示例 待办事项我在这里缺少什么?type UserManager struct {    users []*Users    user  *Users}func NewUserManager() *UserManager {    return &UserManager{}} func (userManager *UserManager) putUser(c appengine.Context, u *Users) (usreRes *Users, err error) {key, err := datastore.Put(c, datastore.NewIncompleteKey(c, "users", nil), u)if err != nil {    return nil, err }c.Debugf("file key inserted :%#v", key)return u, nil}func (userManager *UserManager) getUserById(userKey string, c appengine.Context) (usreRes *Users, err error) {entity_id_int, err := strconv.ParseInt(userKey, 10, 64)if err != nil {    return userManager.user, err}k := datastore.NewKey(c, "users", "", entity_id_int, nil)userRes := new(Users)err = datastore.Get(c, k, &userRes)//err = datastore.Get(c, k, &userManager.user)if err != nil {    return userManager.user, err}//return userManager.user,nilreturn userRes, nil}
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

这是因为datastore.Get(c, k, "pointer")期望一个指向 struct 的指针作为它的第三个参数,而您正在传递一个指针的指针**userRes

userRes := new(Users)

在那里你正在创建一个指向 struct see的指针

所以你应该这样做:

datastore.Get(c, k, userRes)

没有&符号,因为使用 new 关键字您已经创建了一个指针


查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 184 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信