【发布时间】:2017-05-31 21:35:37
【问题描述】:
我在user 包中有一个struct,名为account
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 向客户端发送访问令牌而不是秘密,并且我想降低缩进级别
【问题讨论】:
标签: inheritance go struct compiler-errors compilation