Go言語でランダムな文字列を取得する

martini-congrib/sessionsでセッションIDを取得するあたりのコードを読んでいて見つけたのでメモ。

だいたいこんな感じ。
io.ReadFull(rand.Reader, b)でランダムなバイト配列を取得できる。

package main

import (
	"crypto/rand"
	"encoding/base32"
	"fmt"
	"io"
	"strings"
)

func main() {
	b := make([]byte, 32)
	_, err := io.ReadFull(rand.Reader, b)

	if err != nil {
		fmt.Println("error:", err)
		return
	}

	println(strings.TrimRight(base32.StdEncoding.EncodeToString(b), "="))
}