在Go中使用新型包装器获取ID是否很常见?

问题描述 投票:1回答:1

[在其他静态类型的语言(例如Haskell,Scala或Rust)中,有时对于标识符之类的东西,可以将它们包装为特殊类型,以帮助编译器捕获错误(例如,防止您传入另一个范围内的String)并通过在类型级别上编码责任来提高代码的可读性。

一些例子:

newtype UserId = UserId Integer

case class UserId(value: Long) extends AnyVal

struct UserId(u64);

所有这些(通常)都没有运行时成本,并且几乎没有杂乱的东西,可以提高类型级别的内心和开发时间的文档。

Golang也具有此功能:

type UserId uint64

我的问题不是这是否可行,而是作为Golang的新手,这是否在Golang中是普遍存在的和/或被认为是惯用的,以及为什么。

go idiomatic newtype
1个回答
0
投票

编译器级别的Golang支持type inference。编译的二进制文件中没有运行时开销。

© www.soinside.com 2019 - 2024. All rights reserved.