GoLang," hash.Write" ,"写()"功能来自哪里?

时间:2014-05-17 15:35:46

标签: go

func hash(s string) uint32 {
    h := fnv.New32a()
    h.Write([]byte(s))
    return h.Sum32()
}

这段代码。我明白什么类型是h。这是哈希。 但是对于Hash类型,我没有看到任何Write()方法。 http://golang.org/pkg/hash/这是什么写的()?

感谢

1 个答案:

答案 0 :(得分:5)

Hash界面嵌入了Writer界面。因此,任何想要实现Hash接口的类型也需要实现包含Write方法的Writer接口。

写入方法的原因是您可以计算可以写入的任何内容的哈希值。例如,您可以计算对象的格式化表示的哈希值(通过使用fmt包),或者您可以计算json表示的哈希值(通过使用json包)等。

h := fnv.New32a()
fmt.Fprint(h, myobject)
// alternatively:
// json.NewEncoder(h).Encode(myobject)
// etc.
return h.Sum32()