[Golang]オーバーフローとラップアラウンド

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