何かしらの文字列からhashを作成する事はそんなに難しくないと思いますが
hashを数字として取得したい事があると思います。
そんな時には hash/fnv#Sum32()が使用出来ます。
以下は「文字列を入力して特定の色typeを返す」サンプルです。
package main
import (
"fmt"
"hash/fnv"
)
type COLOR uint32
const (
COLOR_RED COLOR = 0
COLOR_BLUE COLOR = 1
COLOR_GREEN COLOR = 2
COLOR_PURPLE COLOR = 3
COLOR_BROWN COLOR = 4
)
func (c COLOR) String() string {
switch c {
case COLOR_RED:
return "RED"
case COLOR_BLUE:
return "BLUE"
case COLOR_GREEN:
return "GREEN"
case COLOR_PURPLE:
return "PURPLE"
case COLOR_BROWN:
return "BROWN"
}
return ""
}
func color(s string) COLOR {
h := fnv.New32a()
h.Write([]byte(s))
return COLOR(h.Sum32() % 5)
}
func main() {
fmt.Println(color("hogehoge"))
fmt.Println(color("fugafuga"))
fmt.Println(color("piyopiyo"))
}
実行すると以下のように毎回同じCOLOR typeが取得できます。
BLUE
RED
GREEN