{ "@context": "https://schema.org", "@type": "Article", "headline": "检查 Go Lang 中的 io.Writer 类型", "datePublished": "2024-02-13T23:54:24", "dateModified": "2024-02-13T23:54:24", "description": "从现在开始,努力学习吧!本文《检查 Go Lang 中的 io.Writer 类型》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!问题内容简单的问题。我不明白一件事。package mainimport ( encoding/csv fmt log os reflect)func main() { records := [][]string{ ", "publisher": { "@type": "Organization", "name": "Golang学习网", "url": "https://m.17golang.com" }, "mainEntityOfPage": { "@type": "WebPage", "@id": "https://m.17golang.com/article/96274.html" } }
登录
首页 >  Golang >  Go问答

检查 Go Lang 中的 io.Writer 类型

来源:stackoverflow

时间:2024-02-13 23:54:24 328浏览 收藏

从现在开始,努力学习吧!本文《检查 Go Lang 中的 io.Writer 类型》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

简单的问题。 我不明白一件事。

package main

import (
    "encoding/csv"
    "fmt"
    "log"
    "os"
    "reflect"
)

func main() {
    records := [][]string{
        {"first_name", "last_name", "username"},
        {"Rob", "Pike", "rob"},
        {"Ken", "Thompson", "ken"},
        {"Robert", "Griesemer", "gri"},
    }

    file, _ := os.Create("file.csv")

    fmt.Println(reflect.TypeOf(file))
    fmt.Println(reflect.TypeOf(os.Stdout))

    w := csv.NewWriter(file)

    for _, record := range records {
        if err := w.Write(record); err != nil {
            log.Fatalln("error writing record to csv:", err)
        }
    }

    // Write any buffered data to the underlying writer (standard output).
    w.Flush()

    if err := w.Error(); err != nil {
        log.Fatal(err)
    }
}

行:w := csv.newwriter(file) 我检查了方法 -> newwriter 应该获取 io.writer 类型的参数。第 21 和 22 行告诉我“file”和“os.stdout”(也可以放入 newwriter 中)具有以下类型: *操作系统文件 *操作系统文件 那么怎么可能一切都正常呢?在 go 中变量可能有不止一种类型吗?


正确答案


os.Create 返回 *os.File [1],如您所说。

io.Writer 是一个接口。这意味着,任何实现该接口的类型, 可以充当接口。这种情况下,类型只需要实现一个Write 函数[2]。

由于 os.File 确实实现了 Write 函数 [3],因此它可以在任何地方使用 需要 io.Writer

  1. https://golang.org/pkg/os#Create
  2. https://golang.org/pkg/io#Writer
  3. https://golang.org/pkg/os#File.Write

今天关于《检查 Go Lang 中的 io.Writer 类型》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>