dpp3047 2015-04-25 22:17
浏览 39
已采纳

预期指向结构切片的指针

I'm working on a server in golang.

I have an auth-helper that authenticates the user with a secure token (its a test). The error comes when i make a query (I'm using this dep) in the AuthUsingCredentials function, it outputs the following error:

"Expected pointer to struct slice *[]struct"

If I change the var result *entities.User for var result []entities.User and then print result[0] it works but then it outputs:

"cannot use result[0] (type entities.User) as type *entities.User in argument to ah.userEntityToModel"

The auth helper code:

auth.go

package helpers

import (
  "fmt"

  "server/data/entities"
  "server/data/models"
  "server/interfaces"
)

var AuthHelper *authHelper

type authHelper struct{}

func init() {
    AuthHelper = &authHelper{}
}

func (ah *authHelper) userEntityToModel(_entity *entities.User) (*models.User, error) {
  u := models.NewUser(_entity, db)
    u.Username = _entity.Username

  return u, nil
}

func (ah *authHelper) AuthenticateUsingCredentials(_token string) (interfaces.IUser, error) {
  var result *entities.User
  err := db.Where("Token", "=", _token).Find(result)
  if err != nil {
    return nil, err
  }
  if result == nil {
    return nil, fmt.Errorf("Player '%s' not found", _token)
  }

  playerModel, err := ah.userEntityToModel(result)
  if err != nil {
    return nil, err
  }

  return playerModel, nil
}
  • 写回答

1条回答 默认 最新

  • duanquannan0593 2015-04-25 23:31
    关注

    Something like this should work.

    func (ah *authHelper) AuthenticateUsingCredentials(_token string) (interfaces.IUser, error) {
      var result *[]entities.User
      err := db.Where("Token", "=", _token).Find(result)
      if err != nil {
        return nil, err
      }
      if len(result) <= 0 {
        return nil, fmt.Errorf("Player '%s' not found", _token)
      }
    
      playerModel, err := ah.userEntityToModel(&(*result)[0])
      if err != nil {
        return nil, err
      }
    
      return playerModel, nil
    }
    

    you are trying to put an slice of users in a function that takes a pointer to a single user.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?