code: func Hash(fieldVals []interface{}) uint64 {
  	if len(fieldVals) == 0 {
  		// Avoid allocating the hasher if there are no fieldVals
  		return 0
  	}
  	h := fnv.New64a()
  
  	for _, v := range fieldVals {
  		switch v := v.(type) {
  		case string:
  			h.Write([]byte(v))
  		case int64:
  			b := [8]byte{}
  			for i := 0; i < 8; i++ {
  				b[i] = byte(v & 0xFF)
  				v >>= 8
  			}
  			h.Write(b[:])
  		case bool:
  			if v {
  				h.Write([]byte{1})
  			} else {
  				h.Write([]byte{0})
  			}
  		}
  	}
  	return h.Sum64()
  }
docs: // Hash returns a uint64 hash of fieldVals.