猿问

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

我正在学习 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()方法。在哪里可以找到此类信息?也许,我没有阅读好的文档,或者有一种我没有看到的“继承”。


守候你守候我
浏览 194回答 3
3回答

有只小跳蛙

散列实现都是通过一个公共接口提供的。hash.Hash如果您查看 的文档sha512.New,您会看到它返回一个hash.Hash,其中列出了所有Hash特定方法。hash.Hash接口中的第一个字段是内嵌的 io.Writer,它提供了标准Write方法。所有这些值都是文档中的链接,您可以通过这些链接找到所需的定义,甚至是源。

慕姐8265434

的Sum()和Write()功能是的一部分Hash界面,它是由所有不同种类的hashs实现。

陪伴而非守候

hash.Hash返回一个Hash接口,其中包括io.Writer. 如果你检查io.Writer,你会发现一个Writer接口,它有一个Write()方法。由于sha512包确实实现了 Write 方法,因此您可以将 调用Write为hasher方法。访问接口的唯一要求是实现自定义范围中定义的方法。
随时随地看视频慕课网APP

相关分类

Go
我要回答