type Hash

  1. type Hash struct {
  2. // contains filtered or unexported fields
  3. }

func(h * Hash)BlockSize()int

func (h *Hash) Reset() 重置将丢弃已添加到h的所有字节

func (h *Hash) Seed() Seed 返回h的种子值

func (h *Hash) SetSeed(seed Seed)

  • SetSeed将h设置为使用种子,该种子必须已由MakeSeed或另一个Hash的Seed方法返回
  • 相同种子的两个哈希对象的行为相同(如果添加到h的字节相同,最后生成的hash值相同)
  • 在此调用 SetSeed之前添加到h的任何字节将被丢弃

func (h *Hash) Size() int Size返回h的哈希值大小,即8个字节

func (h *Hash) Sum(b []byte) []byte

  • Sum将哈希的当前64位值附加到b。它用于实现hash.Hash。对于直接调用,使用Sum64效率更高。

func (h *Hash) Sum64() uint64 Sum64返回h的当前64位值

func (h *Hash) Write(b []byte) (int, error) 添加b到h,永远不会失败;计数和错误结果用于实现io.Writer

func (h *Hash) WriteByte(b byte) error 添加b到h

func (h *Hash) WriteString(s string) (int, error) 添加b到h,永远不会失败;计数和错误结果用于实现io.Writer

type Seed

  1. type Seed struct {
  2. // contains filtered or unexported fields
  3. }

func MakeSeed() Seed 返回一个随机生成的种子

  1. package main
  2. import (
  3. "fmt"
  4. "hash/maphash"
  5. "time"
  6. )
  7. func main() {
  8. var h maphash.Hash
  9. h.SetSeed(maphash.MakeSeed())
  10. h.Write([]byte{'f', 'o', 'o'})
  11. for {
  12. fmt.Printf("%x\n", h.Sum64())
  13. time.Sleep(1 * time.Second)
  14. }
  15. }
  16. 40caa432955fcc47
  17. 40caa432955fcc47
  18. 40caa432955fcc47
  19. ...