Goではオーバーフローが発生した場合、その演算結果をラップアラウンドする。
オーバーフローとは桁あふれのこと。
ラップアラウンドはオーバーフローした際に最初に戻ること。
サンプル
package main
import (
"fmt"
"math"
)
func main () {
// 最大値の定数
fmt.Printf("unit 32 max value = %d\n", math.MaxUint32)
b := byte(255)
fmt.Println(b)
fmt.Println(b + 1) // == 0
fmt.Println(b + byte(255)) // -1したのと同じ
}
ソースはこちら
と言っても上と同じ。
あとで他の言語でも仕様の比較をする。
iti