【发布时间】:2020-11-16 04:45:17
【问题描述】:
乍一看,当您需要一个不想成为负数的 int 时,似乎有人可能会选择 uint。然而,在实践中,int 似乎总是首选。
我看到如下一般性建议:
- “通常,如果您使用整数,则应该只使用 int 类型。”
- “uint 通常只应用于二进制操作”
- “不要使用无符号类型来强制或建议数字必须为正数。这不是它们的用途。”
- “这是 Go 编程语言所推荐的,当你想进行按位运算时,uint 的具体示例很有用”
我还注意到 Go 会让你将负整数转换为 uint 并给出一些奇怪的结果:
x := -5
y := uint(x)
fmt.Println(y)
>> 18446744073709551611
所以,我的理解是,在处理整数时,无论符号如何,我都应该始终使用 int,除非我发现自己需要 uint,而且在这种情况下我会知道(我认为???)。
我的问题:
- 这是正确的外卖吗?
- 如果是这样,为什么会这样?
- 什么时候应该使用 uint 的例子是什么? -- 也许是一个具体的例子,而不是“当做二进制操作时”,因为我不确定我知道这意味着什么:)
另外,我问的是 Go 的具体实现。
【问题讨论】:
-
这真的和 Go 无关。任何同时具有 int 和 uint 类型的语言都有相同的注意事项。
-
@Flimzy:它有特定的部分。 go 更喜欢 int 的一个原因是,当你误用 int 时,你会得到更多有用的恐慌。
-
@Dani 有什么例子可以让你用 int 得到一个有用的恐慌?
-
ints 是数字,uints 是位模式。就是这么简单。
-
同事:“我们用 uint 表示人的年龄,因为它不能为负数。”我:“一般建议是使用 int,除非你需要 uint。”同事:“为什么?”我:
标签: go