[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

[Golang]配列の要素の並びを逆順にする

Goの練習がてらやってみた

配列操作を簡単に確認。

package main

import (
    "fmt"
)

/*
 配列を渡すとその順番を逆にして表示する
*/
func main() {
    a := [4]string{
        "yamada", 
        "suzuki",
        "tanaka",
        "satou", // この要素にカンマがないとsyntax errorになる
    }

    fmt.Println(a)

    length := len(a)
    fmt.Println(length)

    // その1
    out_ary := []string{}
    for i := 1; i <= length; i++ {
        out_ary = append(out_ary, a[length -i])
    }

    fmt.Println(out_ary)

    // その2
    out_ary2 := []string{}
    for i := length -1 ; i >= 0; i-- {
        out_ary2 = append(out_ary2, a[i])
    }

    fmt.Println(out_ary2)

}

個人的にはその2のほうが素直に書いた感がある。
うーむ。

ソースはこちら

Hello world

outputがこれからは必要だと考え投稿していく。

主にプログラミングのことについて。

その他もあまり制限なく。