How to generate hash number of a string in Go?
Solution 1:
The hash package is helpful for this. Note it's an abstraction over specific hash implementations. Some ready made are found in the package subdirectories.
Example:
package main
import (
"fmt"
"hash/fnv"
)
func hash(s string) uint32 {
h := fnv.New32a()
h.Write([]byte(s))
return h.Sum32()
}
func main() {
fmt.Println(hash("HelloWorld"))
fmt.Println(hash("HelloWorld."))
}
(Also here)
Output:
926844193
107706013
Solution 2:
Here is a function you could use to generate a hash number:
// FNV32a hashes using fnv32a algorithm
func FNV32a(text string) uint32 {
algorithm := fnv.New32a()
algorithm.Write([]byte(text))
return algorithm.Sum32()
}
I put together a group of those utility hash functions here: https://github.com/shomali11/util
You will find FNV32
, FNV32a
, FNV64
, FNV64a
, MD5
, SHA1
, SHA256
and SHA512