在“21世纪C”中,Ben Klemens描述了C在比较表达式中如何自动将有符号数转换为无符号数。 Go是否共享这种相同的危险行为,还是Go采用不同的方式?确定是否修复或共享C的危险隐式 - >无符号转换?
1
A
回答
2
Go中没有隐式转换。为了比较或使用不同类型的两个值进行算术运算,您必须执行手动和显式类型转换。
a := 3 // numerical constant 3 defaults to int
b := uint(2)
c := a < b // compiler error
d := a < int(b) // OK
2
Go只使用explicit type conversions进行包括比较在内的所有操作。
var a uint64
var b int64
a = 1
b = 1
if a == b {
fmt.Println("Equal")
}
这个片段将会导致错误:
tmp/sandbox428200464/main.go:13: invalid operation: a == b (mismatched types uint64 and int64)
做比较,你必须投中的变量同类型明确:
if int64(a) == b {...}
所以,绝对是,如果可以这样说,它是固定的。
Playgound为片段。
相关问题
- 1. 串危险符号转化
- 2. 使用隐式字符串转换运算符的危险?
- 3. 如何确定隐式转换是否存在于C#中?
- 4. GET_ACCOUNTS权限是否危险?
- 5. 是否有危险从浮动转换为BigDecimal然后回来?
- 6. shared_ptrs的random_shuffle向量是否坏(或者甚至是危险的)?
- 7. 在Javascript中使用右括号之后换行符是否危险?
- 8. 无法隐式转换字符串 - C#
- 9. C++从无符号的隐式数据类型转换为带符号的
- 10. 是jQuery.html()危险吗?
- 11. EVAL()。这是危险的吗?
- 12. 隐式转换符号时隐藏any2stringadd
- 13. 符号 - 无符号转换
- 14. PHP的复杂卷曲语法是否危险?
- 15. C#枚举和重复值 - 危险?
- 16. 是转换int - >无符号long由标准的长定义
- 17. Enums的自定义属性是否危险?
- 18. 在$ _SESSION中存储$ _POST是否危险?
- 19. 危险的组合Splash +共享首选项
- 20. 迭代它时修改集合是否有任何危险?
- 21. 错误:从“无符号字符*”无效转换“常量符号字符*”
- 22. coxph.detail $危险的公式是什么?
- 23. f77有777权限是否危险?
- 24. 该代码是否有潜在危险?
- 25. 添加外键关系是否危险?
- 26. 汇编语言是否危险?
- 27. 处置后调用MemoryStream.ToArray()是否危险?
- 28. 暴露用户ID是否危险?
- 29. 这个加入提示是否危险?
- 30. 是否可以确定符号是否是C中的变量或函数?