2015-05-26 117 views
0

我有以下两种结构:不能嵌入结构的结构

type Profile struct { 
    Email  string `json:"email"` 
    Username  string `json:"username"` 
    Name   string `json:"name"` 
    Permissions []string `json:"permissions"` 
} 

type Session struct { 
    Token string `json:"token"` 
    User Profile `json:"user"` 
} 

,我试图创建一个新的Session使用:

session := Session{token, profile} 

其中token是一个字符串和配置文件是Profile都是以前创建的。

我得到的错误不能使用配置文件(类型*配置文件)作为类型配置文件字段值当我编译。

我错过了什么吗?

回答

4

您的profile是一个指针。重新调整你的Session

type Session struct { 
    Token string `json:"token"` 
    User *Profile `json:"user"` 
} 

或取消对它的引用。

session := Session{token, *profile} 
+0

谢谢 - 什么dereuencing实际上意味着呢? – tommyd456

+0

当你取消引用一个指针时,你得到指针(它是一个地址)指向的值。 '* Profile'类型是'Profile'值的地址。 '* p',其中'p'是类型'* Profile',将得到该值。 –