我的问题是Go中的类型定义以及何时将其用于基本类型 请考虑以下示例 我有这个结构,代表我的数据库中的一行:
type DBEntityAttribute struct {
Id uint64
EntityId uint64
EndPointNumber uint8
AttributeNumber uint8
ParentId uint64
Value string
Tag int
ContentType sql.NullString
Maturity int
Author int
AttributeType string
IsNegated bool
}
EntityId和AttributeNumber是我在代码中的各种结构中使用的属性。
现在我想把它重构成这样的东西:
type EntityId uint64
type AttributeNumber uint8
type DBEntityAttribute struct {
Id uint64
EntityId EntityId
EndPointNumber uint8
AttributeNumber AttributeNumber
ParentId uint64
Value string
Tag int
ContentType sql.NullString
Maturity int
Author int
AttributeType string
IsNegated bool
}
这将允许我在一个地方更改EntityId和AttributeNumber的类型。另外,当我传递一个entityId作为函数参数时,我现在可以给它特定的EntityId类型,而不是匿名的uint64。
我现在的问题是:
我知道这可能是主观的,但Go社区通常对某些模式表示同意,我希望遵守他们的指导原则。
答案 0 :(得分:2)
关于何时使用自定义类型,没有硬性规定。我的个人规则是:
您想要在一个位置更改基础类型的原因似乎是一个很好的理由。
其他好的理由是:
FooID
分配给BarID
)