Функция fnv.New64

Функция fnv.New64 создает новый объект хеша, реализующий алгоритм FNV-1a с 64-битным результатом. Она возвращает интерфейс hash.Hash64, который можно использовать для вычисления хеш-суммы данных. В отличие от fnv.New64a, эта функция использует алгоритм FNV-1, а не FNV-1a. Первый параметр не требуется, так как функция не принимает аргументов.

Синтаксис

gofnv.New64() hash.Hash64

Пример

Давайте создадим хеш и вычислим сумму для строки "abcde" с помощью метода Sum:

gopackage main

import (
  "fmt"
  "hash/fnv"
)

func main() {
  h := fnv.New64()
  h.Write([]byte("abcde"))
  res := h.Sum64()
  fmt.Println(res)
}

Результат выполнения кода:

go14731002111905924178

Пример

Давайте вычислим хеш для пустой строки и для строки "12345", чтобы увидеть разницу в результатах:

gopackage main

import (
  "fmt"
  "hash/fnv"
)

func main() {
  h := fnv.New64()

  h.Write([]byte(""))
  res1 := h.Sum64()
  fmt.Println(res1)

  h.Reset()
  h.Write([]byte("12345"))
  res2 := h.Sum64()
  fmt.Println(res2)
}

Результат выполнения кода:

go14695981039346656037
4626048229596280156

Пример

Давайте создадим хеш и вычислим сумму для слайса байт с помощью метода Sum, который возвращает срез байт, а не 64-битное число:

gopackage main

import (
  "fmt"
  "hash/fnv"
)

func main() {
  h := fnv.New64()
  data := []byte("abcde")
  h.Write(data)
  res := h.Sum(nil)
  fmt.Printf("%x", res)
}

Результат выполнения кода:

gocc6bd3d9dc4bb065

Смотрите также

  • функцию fnv.New64a,
    которая создает хеш FNV-1a с 64-битным результатом
  • функцию fnv.New32,
    которая создает хеш FNV-1 с 32-битным результатом
  • функцию fnv.New32a,
    которая создает хеш FNV-1a с 32-битным результатом
  • функцию fnv.New128,
    которая создает хеш FNV-1 с 128-битным результатом