c - Go 是否修复或共享 C 的危险隐式 -> 无符号转换?

标签 c go types unsigned signed

在“21 世纪 C”中,Ben Klemens 描述了 C 如何自动将有符号数转换为无符号数,例如在比较表达式中。 Go 是否具有相同的危险行为,或者 Go 的处理方式不同?

最佳答案

Go 中没有隐式转换。为了对两个不同类型的值进行比较或运算,您必须进行手动和显式类型转换。

a := 3          // numerical constant 3 defaults to int
b := uint(2)
c := a < b      // compiler error
d := a < int(b) // OK

关于c - Go 是否修复或共享 C 的危险隐式 -> 无符号转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40820275/

相关文章:

go - 函数返回指向 struct slice 的指针只返回 1

php - PDO::PARAM_* 与强制转换

c - 将 ceil 的结果转换为整数是否安全?

c - 无法创建会反转字符串的程序

c - clock_t、time_t 和 struct tm 有什么区别?

go - 如果不对结果做任何改变,为什么我们在下面的脚本中添加&?

c - 使用 poll() 运行一个简单的 TCP 服务器,如何触发事件 "artificially"?

go - 像 [0 :2] 这样的 slice 声明

python - 在 Python/Pandas 中获取元素类型的有效方法

java - 如何在实现接口(interface)后在另一个接口(interface)上强制执行类型