如何定义嵌入/匿名字段(go struct)

时间:2014-08-25 17:17:43

标签: struct go literals

我正在尝试初始化嵌入式结构。然而,编译器说我不能混合值和值初始化器。什么是正确的语法? httpCl的类型为*requests.Trans

type clTran struct {
    *requests.Trans
    uCh chan user
}

func main() {
    httpCl, err := requests.tr(px)
    clT := clTran{httpCl, uCh: uCh}
}

1 个答案:

答案 0 :(得分:4)

如果您在结构文字中标记字段(通常应该这样),则需要标记所有字段。在嵌入的情况下,该字段采用其类型的名称。所以

clT := clTran {
    Trans: httpCl,
    uCh: uCh,
}

请注意,此字段名称也适用于访问和写入,clT.Trans = httpCl有效并将写入嵌入字段。