Как сгенерировать хэш-номер строки в Go? Например: hash("HelloWorld") = 1234567 Есть ли встроенная функция? Спасибо. Ответ 1 Пакет hash полезен для этого. Обратите внимание, что это абстракция по конкретным реализациям хеширования. Некоторые готовые изделия находятся в пакете subdirectories. Пример: 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.")) } (Также здесь) Вывод: 926844193 107706013 Ответ 2 Вот функция, которую вы можете использовать для генерации хэш-номера: // FNV32a hashes using fnv32a algorithm func FNV32a(text string) uint32 { algorithm := fnv.New32a() algorithm.Write([]byte(text)) return algorithm.Sum32() } Я собрал группу этих хэш-функций полезности здесь: https://github.com/shomali11/util Вы найдете FNV32, FNV32a, FNV64, FNV65a, MD5, SHA1, SHA256 и SHA512
Ответ 1 Пакет hash полезен для этого. Обратите внимание, что это абстракция по конкретным реализациям хеширования. Некоторые готовые изделия находятся в пакете subdirectories. Пример: 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.")) } (Также здесь) Вывод: 926844193 107706013
Ответ 2 Вот функция, которую вы можете использовать для генерации хэш-номера: // FNV32a hashes using fnv32a algorithm func FNV32a(text string) uint32 { algorithm := fnv.New32a() algorithm.Write([]byte(text)) return algorithm.Sum32() } Я собрал группу этих хэш-функций полезности здесь: https://github.com/shomali11/util Вы найдете FNV32, FNV32a, FNV64, FNV65a, MD5, SHA1, SHA256 и SHA512