部分嵌入结构

我可以将类型 A 嵌入到 B 中。


type A struct {

  R int64

  S int64

}


type B struct {

  A

}

但是我如何只嵌入一个字段呢?


type B struct {

  A.R // does not work

}


慕桂英4014372
浏览 97回答 3
3回答

米琪卡哇伊

假设您的两种结构数据类型A和B.如果你想要A并且B都有一个名为Ftype 的字段T,你可以这样做type (    A struct {        F T    }    B struct {        F T    })如果您只想更改T源代码中一个位置的类型,您可以像这样抽象它type (    T = someType    A struct {        F T    }    B struct {        F T    })F如果您只想更改源代码中一个位置的名称,您可以像这样抽象它type (    myField struct {        F T    }    A struct {        myField    }    B struct {        myField    })如果您有多个要抽象的可提取字段,则必须像这样单独抽象它们type (    myField1 struct {        F1 T1    }    myField2 struct {        F2 T2    }        A struct {        myField1        myField2    }        B struct {        myField1    })

白板的微信

您不能嵌入单个字段。您只能嵌入整个类型。如果要嵌入单个字段,则需要创建一个仅包含该字段的新类型,然后嵌入该类型:type R struct {  R int64}type B struct {  R}

Helenr

这是我现在最好的解决方案......type A struct {  R int64  S int64}type B struct {  R A}然后在实施过程中...&B{ R: &A{   R,   // S, - ideally we would not be able to pass in `S` }}我不喜欢这个解决方案,因为我们仍然可以传入S...更新:基于@HymnsForDisco 的回答,这可以编码为...// A type definition could be used `type AR int64`,//   instead of a type alias (below), but that would//   require us to create and pass the `&AR{}` object,//   to `&A{}` or `&B{}` for the `R` field.type AR = int64type A struct {  R AR  S int64}type B struct {  R AR}并实施为...&B{  R,}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go