49、Go语言基础 - IO编程 - 输入和输出
hi,我是温新
Go 语言将 I/O 操作封装在如下几个包中:
-
io
:为I/O
原语提供基本的接口,在 io 包中最重要的是两个接口:Reader
和Writer
接口; -
fmt
:实现格式化 I/O; -
bufio
:实现带缓冲的 I/O。
io:基本 I/O 接口
io
包是 Go 标准库中的一个核心包,它提供了用于进行输入和输出操作的接口和函数。这个包包含了多个接口和类型,用于处理文件、网络、内存和其他数据源的输入和输出。
IO 包主要组件和概念
-
接口:
-
io.Reader
:代表一个可读取数据的接口。它定义了一个Read
方法,用于从数据源读取数据到字节切片。 -
io.Writer
:代表一个可写入数据的接口。它定义了一个Write
方法,用于将数据写入目标。 -
io.Closer
:代表一个可以关闭的接口,通常用于关闭文件或网络连接。它定义了一个Close
方法。 -
io.Seeker
:代表一个可以寻址的接口,通常用于定位和设置数据源的位置。它定义了一个Seek
方法。
-
-
类型:
-
io.Reader
和io.Writer
接口的常见实现类型,如bytes.Buffer
、os.File
、net.Conn
等。 -
io.Pipe
:用于创建一个管道,允许一个协程写入数据并另一个协程从中读取数据。
-
-
函数:
-
io.Copy
:用于将数据从一个io.Reader
复制到一个io.Writer
。 -
io.ReadFull
:用于从io.Reader
中读取固定数量的字节。 -
io.ReadAll
:用于从io.Reader
中读取所有可用的数据,通常用于内存缓冲区。 -
io.WriteString
:用于向io.Writer
写入字符串。
-
-
错误处理:
-
io.EOF
:代表文件或数据流结束的错误。 -
io.ErrUnexpectedEOF
:代表意外的文件结束错误。
-
fmt 格式化 I/O
fmt
包是 Go 标准库中的一个核心包,用于格式化输入和输出。它提供了一系列函数和方法,用于格式化文本、数字、日期等数据,并将它们输出到控制台、文件或其他输出流。
fmt 包主要组件和概念:
-
格式化函数:
-
fmt.Print
和fmt.Println
:用于将文本输出到标准输出(控制台)。Print
输出文本,Println
输出文本并添加换行符。 -
fmt.Printf
和fmt.Sprintf
:用于格式化文本并返回结果字符串。Printf
根据格式字符串进行格式化,Sprintf
返回格式化后的字符串。 -
fmt.Fprint
和fmt.Fprintln
:与Print
和Println
相似,但允许将输出定向到指定的输出流(例如文件)。
-
-
格式化字符串:格式化函数通常使用包含占位符的格式化字符串,其中占位符由百分号
%
开头,后跟一个字符,如%s
表示字符串,%d
表示整数。占位符用于指定要格式化的数据的类型和位置。 -
错误处理:
fmt
包中的许多函数返回一个error
值,用于表示格式化或输出操作的错误。可以使用errors
包或其他错误处理机制来处理这些错误。 -
输入函数:
fmt
包还包含用于将输入解析为特定类型的函数,如fmt.Scanf
和fmt.Fscanf
。 -
打印格式标识符:在格式化字符串中,你可以使用一些标识符来自定义输出格式,如
%d
表示十进制整数,%s
表示字符串,%f
表示浮点数等。
bufio 包
bufio
包是 Go 标准库中的一个包,用于提供带缓冲的输入和输出操作,以提高读写大量数据时的效率。它包含了许多用于缓冲读写的函数和类型,以及用于文件、网络连接等的包装类型。
bufio 包主要组件和概念:
-
缓冲读写:
-
bufio.Reader
:代表一个带缓冲的读取器,允许从输入流中按行或字节块读取数据。它提供了Read
、ReadLine
等方法,以及许多其他方法来处理输入。 -
bufio.Writer
:代表一个带缓冲的写入器,允许将数据写入输出流并控制何时执行实际的写入操作。它提供了Write
、WriteString
等方法,以及Flush
方法来执行实际的写入操作。
-
-
包装类型:
bufio
包还提供了一些包装类型,如bufio.Scanner
和bufio.ReaderAt
,用于进一步处理数据和实现高级功能。 -
自定义缓冲:你可以使用
bufio.NewWriter
和bufio.NewReader
函数创建自定义缓冲的写入器和读取器,以控制缓冲区大小和其他选项。 -
性能优化:通过使用带缓冲的读写,
bufio
包可以显著提高输入输出的性能,减少频繁的系统调用。
请登录后再评论