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

时间:2016-02-09 15:04:17

标签: 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()和{{ 1}}方法。在哪里可以找到这种信息?也许,我不是在阅读好文件,或者有一种我没有看到的“继承”。

3 个答案:

答案 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方法。

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