使用uint64的for循环不会停止

时间:2018-12-25 17:41:22

标签: for-loop go

有没有解释为什么使用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,依此类推

1 个答案:

答案 0 :(得分:2)

您的循环在i >= 0期间继续,但无符号整数总是始终大于或等于零。无符号整数不能为负数,因此循环永远不会终止。

尝试将i更改为int64,看看其行为是否有所不同。 :-)

好运。