指向结构切片的预期指针
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
}
您正在尝试将一部分用户放在一个函数中,该函数采用指向单个用户的指针。
我正在用 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
}
您正在尝试将一部分用户放在一个函数中,该函数采用指向单个用户的指针。