为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
守候你守候我 2021-12-07 19:39:04
我正在学习 go 语言并在一些网络资源的帮助下编写我的第一个 go 程序:package mainimport (    "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()方法。在哪里可以找到此类信息?也许,我没有阅读好的文档,或者有一种我没有看到的“继承”。
查看完整描述

3 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

散列实现都是通过一个公共接口提供的hash.Hash

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

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

所有这些值都是文档中的链接,您可以通过这些链接找到所需的定义,甚至是源。


查看完整回答
反对 回复 2021-12-07
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

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


查看完整回答
反对 回复 2021-12-07
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

hash.Hash返回一个Hash接口,其中包括io.Writer. 如果你检查io.Writer,你会发现一个Writer接口,它有一个Write()方法。由于sha512包确实实现了 Write 方法,因此您可以将 调用Writehasher方法。

访问接口的唯一要求是实现自定义范围中定义的方法。


查看完整回答
反对 回复 2021-12-07
  • 3 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信