指向结构切片的预期指针

Expected pointer to struct slice

我正在用 golang 开发服务器。

我有一个 auth-helper,它使用安全令牌对用户进行身份验证 (这是一个测试)。当我在 AuthUsingCredentials 函数中查询 (我正在使用此 dep 时出现错误,它输出以下错误:

"Expected pointer to struct slice *[]struct"

如果我将 var result *entities.User 更改为 var result []entities.User,然后打印结果 [0],它会工作,但随后会输出:

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

授权助手代码:

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
}

像这样的东西应该有用。

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
}

您正在尝试将一部分用户放在一个函数中,该函数采用指向单个用户的指针。