有没有解释为什么使用uint64的for循环不会在0处停止?
我用int尝试了相同的for循环,它按预期工作。
package main
import (
"fmt"
)
func main() {
i := uint64(5)
for ; i>=uint64(0); i-- {
fmt.Printf("step %d\n", i)
}
}
我希望此函数在输出step 0
处停止,但它会溢出int并一直持续到step 18446744073709551615
,依此类推
答案 0 :(得分:2)
您的循环在i >= 0
期间继续,但无符号整数总是始终大于或等于零。无符号整数不能为负数,因此循环永远不会终止。
尝试将i
更改为int64
,看看其行为是否有所不同。 :-)
好运。