以下代码,使用了无符号uint,做减法时会出现溢出

package main

import (
    "fmt"
)

func main() {
    var a uint = 1
    var b uint = 2
    fmt.Println(a - b) // 18446744073709551615
}

正确写法应该使用有符号int

package main

import (
    "fmt"
)

func main() {
    var a int = 1
    var b int = 2
    fmt.Println(a - b) // -1
}

溢出后,刚好和最大值一样了

package main

import (
    "fmt"
    "math"
)

func main() {
    var a uint = math.MaxUint64

    fmt.Println(a) // 18446744073709551615
}