我正在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>';
答案 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
}
你试图将一片用户放在一个带有指向单个用户的指针的函数中。