代码拉取完成,页面将自动刷新
package devstatscode
import (
"fmt"
"hash/fnv"
"strconv"
)
// HashStrings - returns unique Hash for strings array
// This value is supposed to be used as ID (negative) to mark it was artificially generated
func HashStrings(strs []string) int {
h := fnv.New64a()
s := ""
for _, str := range strs {
s += str
}
_, _ = h.Write([]byte(s))
res := int(h.Sum64())
if res > 0 {
res *= -1
}
if res == -0x8000000000000000 {
return HashStrings(append(strs, "a"))
}
return res
}
// HashObject takes map[string]interface{} and keys from []string and returns hash string
// from given keys from map
func HashObject(iv map[string]interface{}, keys []string) string {
h := fnv.New64a()
s := ""
for _, key := range keys {
v, ok := iv[key]
if !ok {
Fatalf("HashObject: %+v missing %s key", iv, key)
}
s += fmt.Sprintf("%v", v)
}
_, _ = h.Write([]byte(s))
return strconv.FormatUint(h.Sum64(), 36)
}
// HashArray takes []interface{} and returns hash string
// from given keys from map
func HashArray(ia []interface{}) string {
h := fnv.New64a()
s := ""
for _, iv := range ia {
s += fmt.Sprintf("%v", iv)
}
_, _ = h.Write([]byte(s))
return strconv.FormatUint(h.Sum64(), 36)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。