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 = int64
type A struct {
R AR
S int64
}
type B struct {
R AR
}
3条答案
按热度按时间3htmauhk1#
假设您有两个结构数据类型
A
和B
。如果您希望
A
和B
都有一个名为F
且类型为T
的字段,则可以如下所示如果您希望只在源代码中的一个位置更改
T
类型,则可以如下抽象它如果您希望只在源代码中的一个位置更改
F
的名称,则可以这样抽象它如果您有多个要抽象的可解压缩字段,则必须像这样分别对它们进行抽象
pcrecxhr2#
不能嵌入单个字段。只能嵌入整个类型。
如果要嵌入单个字段,则需要创建仅包含该字段的新类型,然后嵌入该类型:
n3ipq98p3#
这是我现在最好的解决方案...
然后在实施过程中...
我不喜欢这个解决方案,因为我们仍然可以传入
S
...**更新:**根据@HymnsForDisco的答案,这可以编码为...
并实现为...