如何知道我们可以使用go包的功能?

plu*_*ets 1 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)

}
Run Code Online (Sandbox Code Playgroud)

它编译并按预期工作,但我不能自己编写这段代码,因为如果我查看sha256的Go包参考,我看不到Write()Sum()方法.在哪里可以找到这种信息?也许,我不是在阅读好的文件,或者有一种我没有看到的"继承".

Jim*_*imB 5

哈希实现都是通过通用接口提供的.hash.Hash

如果您查看文档sha512.New,您会看到它返回一个hash.Hash,其中列出了所有Hash特定方法.

hash.Hash接口中的第一个字段是嵌入式 io.Writer,它提供标准Write方法.

所有这些值都是文档中的链接,您可以按照所需的定义,甚至是源代码.