整数型の最大値、最小値 in Go

Go言語 - 整数型 - 覚えたら書く

package main

import (
	"fmt"
	"math"
)

func main() {
	fmt.Printf("int8   -> min:%d, max:%d\n", math.MinInt8, math.MaxInt8)
	fmt.Printf("int16  -> min:%d, max:%d\n", math.MinInt16, math.MaxInt16)
	fmt.Printf("int32  -> min:%d, max:%d\n", math.MinInt32, math.MaxInt32)
	fmt.Printf("int64  -> min:%d, max:%d\n", int64(math.MinInt64), int64(math.MaxInt64))

	fmt.Printf("uint8  -> min:0, max:%d\n", math.MaxUint8)          // uint8の最小値は0。最小値の定数は無い
	fmt.Printf("uint16 -> min:0, max:%d\n", math.MaxUint16)         // uint16の最小値は0。最小値の定数は無い
	fmt.Printf("uint32 -> min:0, max:%d\n", uint32(math.MaxUint32)) // uint32の最小値は0。最小値の定数は無い
	fmt.Printf("uint64 -> min:0, max:%d\n", uint64(math.MaxUint64)) // uint64の最小値は0。最小値の定数は無い
}

output

int8   -> min:-128, max:127
int16  -> min:-32768, max:32767
int32  -> min:-2147483648, max:2147483647
int64  -> min:-9223372036854775808, max:9223372036854775807
uint8  -> min:0, max:255
uint16 -> min:0, max:65535
uint32 -> min:0, max:4294967295
uint64 -> min:0, max:18446744073709551615

Go言語はサイズがきっちり決まった整数型だけではなく、OSやCPUなどの実装系に依存した(実装系によってサイズが変わる)整数型も存在しています。

サイズ(32bit実装) サイズ(64bit実装) 符号
int 32bit 64bit あり
uint 32bit 64bit なし

整数リテラルを使って暗黙的に定義した変数はint型になります

func main() {
    val1 := 123
    fmt.Printf("val1 -> %d, type: %T\n", val1, val1)
    // val1 -> 123, type: int
}

Goでランダム文字列

Go言語でランダムな文字列を生成する方法の比較 - Qiita より。

const rs2Letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

func RandString2(n int) string {
    b := make([]byte, n)
    for i := range b {
        b[i] = rs2Letters[rand.Intn(len(rs2Letters))]
    }
    return string(b)
}