有没有人能很好的解释一下Golang的NopCloser功能?
我环顾四周,除了Golang的主要文档中的解释之外,什么都没有找到:

NoCloser返回一个ReadCloser,其中包含一个no-op-Close方法来包装

如有任何提示或解释,我们将不胜感激.谢谢.

推荐答案

当你需要返回io.ReadCloser,同时确保Close()可用时,你可以使用NopCloser来构建这样一个ReaderCloser.

你可以在fork of gorestutil.go中看到一个例子

//Marshals the data in interface i into a byte slice, using the Marhaller/Unmarshaller specified in mime.
//The Marhaller/Unmarshaller must have been registered before using gorest.RegisterMarshaller
func InterfaceToBytes(i interface{}, mime string) (io.ReadCloser, error) {
    v := reflect.ValueOf(i)
    if v.Kind() == reflect.Ptr {
        v = v.Elem()
    }
    switch v.Kind() {
    case reflect.Bool:
        x := v.Bool()
        if x {
            return ioutil.NopCloser(bytes.NewBuffer([]byte("true"))), nil
        }

Go相关问答推荐

Go:嵌入类型不能是类型参数""

Zitadel示例Go Webapp加密密钥

无法使用Segentio;S Kafka-Go连接到融合的Kafka

如何用';贪婪原则';正确地

Redis:尽管数据存在,但 rdb.Pipelined 中出现redis:nil错误

如何将 goose 迁移与 pgx 一起使用?

Golang telegram 机器人

在 GoLang 中对自定义 struct 体数组进行排序

如何根据地址和大小打印字符串

如何将整数哈希细分为范围

如何使用 go-playground/validator 编写 snake case 绑定标签?

获取切片元素的地址是否意味着 Go 中元素的副本?

如何在 helm 中将字符串连接到 .AsConfig 的结果?

为什么当我忽略 template.New() 程序可以成功运行?

此代码如何生成内存对齐切片?

gorm 获取列名

Grafana/Prometheus 将多个 ip 可视化为查询

在 Golang 中获取谷歌云服务帐户的访问令牌?

为什么 go.mod 中的所有依赖都是间接的?

golangci-lint 的 GitHub 操作失败,无法加载 fmt