[在其他静态类型的语言(例如Haskell,Scala或Rust)中,有时对于标识符之类的东西,可以将它们包装为特殊类型,以帮助编译器捕获错误(例如,防止您传入另一个范围内的String
)并通过在类型级别上编码责任来提高代码的可读性。
一些例子:
newtype UserId = UserId Integer
或
case class UserId(value: Long) extends AnyVal
或
struct UserId(u64);
所有这些(通常)都没有运行时成本,并且几乎没有杂乱的东西,可以提高类型级别的内心和开发时间的文档。
Golang也具有此功能:
type UserId uint64
我的问题不是这是否可行,而是作为Golang的新手,这是否在Golang中是普遍存在的和/或被认为是惯用的,以及为什么。
编译器级别的Golang支持type inference。编译的二进制文件中没有运行时开销。