我正在学习 go 语言并在一些网络资源的帮助下编写我的第一个 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()
和 Sum()
方法。在哪里可以找到此类信息?也许,我没有阅读好的文档,或者有一种我没有看到的“继承”。
最佳答案
哈希实现都是通过一个通用的 hash.Hash
提供的。 interface .
如果您查看 sha512.New
的文档,你会看到它返回一个 hash.Hash
,其中列出了所有 Hash
特定方法。
hash.Hash
接口(interface)中的第一个字段是 embedded io.Writer
,它提供了标准的 Write
方法。
所有这些值都是文档中的链接,您可以按照这些链接找到所需的定义,甚至可以找到源代码。
关于go - 如何知道我们可以使用 go 包的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35295339/