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

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

最佳答案

哈希实现都是通过一个通用的 hash.Hash 提供的。 interface .

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

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

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

关于go - 如何知道我们可以使用 go 包的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35295339/

相关文章:

google-app-engine - 云数据存储 client.GetAll 类型不匹配但 client.Get 有效

go - Golang 中类似于定时器的闹钟功能

Go - 使用不打印的 goroutines 解析串口输入

go - 使用 apimachinery/client-go 检索不包含标签的 kubernetes 节点

docker - Webserver 无法通过 docker-compose 连接到 Redis

go - ANSI 这个序列是什么意思?

go - 使用服务帐户在 Golang 中验证对 Cloud Function 的客户端调用

unit-testing - 具有 Google Cloud API 依赖项的单元测试代码

time - 我如何在 Go 语言中格式化时间

go - 如何为每组选择最接近给定时间的数据