我正在学习go语言并在一些网络资源的帮助下编写我的第一个程序:
package main
import (
"fmt"
"crypto/sha512"
"encoding/base64"
)
func main() {
ba := []byte("HelloWorld")
hasher := sha512.New()
hasher.Write(ba)
sha := base64.StdEncoding.EncodeToString(hasher.Sum(nil))
fmt.Printf(sha)
}
它编译并按预期工作,但我无法自己编写此代码,因为如果我查看sha256的Go包参考,我看不到Write()
和{{ 1}}方法。在哪里可以找到这种信息?也许,我不是在阅读好文件,或者有一种我没有看到的“继承”。
答案 0 :(得分:5)
哈希实现都是通过公共hash.Hash
interface提供的。
如果您查看sha512.New
的文档,就会看到它返回hash.Hash
,其中列出了所有Hash
特定方法。
hash.Hash
界面中的第一个字段是embedded io.Writer
,它提供标准Write
方法。
所有这些值都是文档中的链接,您可以按照所需的定义进行操作,甚至可以使用源代码。
答案 1 :(得分:0)
Sum()
和Write()
函数是Hash
接口的一部分,它由所有不同类型的哈希实现。
答案 2 :(得分:0)
hash.Hash
返回Hash
界面,其中包含io.Writer
。如果您选中io.Writer
,则会找到Writer
接口,其中包含Write()
方法。由于sha512
包确实实现了Write方法,因此您可以将Write
称为hasher
方法。
访问接口的唯一要求是实现自定义范围中定义的方法。