预期指向结构切片的指针

时间:2015-04-25 22:17:53

标签: struct types go

我正在golang上的服务器上工作。

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

  

“指向struct slice * [] struct”的预期指针

如果我更改了var result []entities.User 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 } 然后打印结果[0],它会有效,但会输出:

  

“不能使用result [0](类型entities.User)作为类型* entities.User in   参数ah.userEntityToModel“

auth帮助程序代码:

auth.go

print '<td>' . explode("(", $row["klass"])[0] . '</td>';

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效。

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
}

你试图将一片用户放在一个带有指向单个用户的指针的函数中。