我在user
包中有一个叫做account
的struct
type Account struct {
Tp string `json:"type"bson:"type"`
AccountId string `json:"account_id"bson:"account_id"`
Credentials map[string]interface{} `json:"credentials,omitempty"bson:"credentials,omitempty"`
ProfilePicture string `json:"profile_picture,omitempty"`
Username string `json:"username"bson:"username"`
AccessToken map[string]interface{}`bson:"access_token,omitempty"`
}
我想把这个账户结构体嵌入到另一个结构体中,在user/accounts
里实现。
type returnAccount struct {
user.Account
AccessToken string `json:"access_token,omitempty"`
}
在尝试嵌入之前,请确保已正确导入用户包,我之前使用它很成功。
最后,在循环中获取用户帐户并创建一个returnAccount
的映射,并从我的函数中返回。这是我的函数:
func getAccounts(usr *user.AuthenticatedUser, id ...string) (accounts map[string]returnAccount) {
accounts = make(map[string]returnAccount)
if len(id) > 0 {
for _, v := range id {
for _, acnt := range usr.Accounts {
if acnt.AccountId == v {
accounts[acnt.AccountId] = returnAccount{
Tp: acnt.Tp,
AccountId:acnt.AccountId,
}
}
}
}
return
}
for _, v := range usr.Accounts {
accounts[v.AccountId] = returnAccount{
Tp: v.Tp,
AccountId:v.AccountId,
Username: v.Username,
}
}
return
}
但是这段代码不会编译,在这里出现了错误信息
# sgin/api/user/accounts
api/user/accounts/getaccounts.go:16: unknown returnAccount field 'Tp' in struct literal
api/user/accounts/getaccounts.go:17: unknown returnAccount field 'AccountId' in struct literal
api/user/accounts/getaccounts.go:26: unknown returnAccount field 'Tp' in struct literal
api/user/accounts/getaccounts.go:27: unknown returnAccount field 'AccountId' in struct literal
api/user/accounts/getaccounts.go:28: unknown returnAccount field 'Username' in struct literal
所有我需要访问的 Account 结构体成员都是公开的,一切看起来都很直截了当和简单,但我不知道为什么会出现错误。
我需要这个字段的原因是我想通过API将访问令牌发送给客户端,但不包括密钥,并且我想减少缩进级别。