首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何知道go包可以使用哪些功能?

如何知道go包可以使用哪些功能?
EN

Stack Overflow用户
提问于 2016-02-09 15:04:16
回答 3查看 61关注 0票数 1

我正在学习go语言,并在一些网络资源的帮助下编写了我的第一个go程序:

代码语言:javascript
复制
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()方法。在哪里可以找到这类信息?也许,我没有阅读好的文档,或者有一种“继承”,我没有看到。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-09 15:08:15

哈希实现都是通过一个公共的hash.Hash 接口提供的。

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

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

所有这些值都是文档中的链接,您可以按照这些链接到所需的定义,甚至指向源。

票数 5
EN

Stack Overflow用户

发布于 2016-02-09 15:08:16

Sum()Write()函数是Hash接口的一部分,该接口由各种不同类型的哈希实现。

票数 0
EN

Stack Overflow用户

发布于 2016-02-09 15:15:12

hash.Hash返回一个Hash接口,其中包括io.Writer。如果您检查io.Writer,您将找到一个Writer接口,它有一个Write()方法。因为sha512包确实实现了写方法,所以可以将Write作为hasher方法调用。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35295339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档