go 语言中,eof 字符由常量 io.eof 表示,表示文件或流的末尾。应用场景包括:检测读取操作已达文件或流末尾检查文件或流已关闭处理错误情况(如文件不存在)
Go 语言中的 EOF 字符
在 Go 语言中,EOF(文件结束)字符由常量 io.EOF 表示。它是一个表示输入流或文件已达到结尾的特殊值。
EOF 字符的用途
EOF 字符用于指示如下情况:
- 读取操作已到达文件或流的末尾
- 文件或流已关闭
- 错误已发生(例如文件不存在)
检查 EOF
当使用 io.Reader 接口或 bufio 包中的 Scanner 类型时,可以使用以下方法检查输入的 EOF:
- io.Reader.Read() 方法将返回 io.EOF 作为错误值来表示 EOF
- bufio.Scanner.Scan() 方法将返回 false 并将错误设置为 io.EOF
示例
以下代码示例演示了如何使用 io.EOF 来检测 EOF:
package main import ( "fmt" "io" "os" ) func main() { // 打开一个文件 file, err := os.Open("example.txt") if err != nil { fmt.Println(err) return } defer file.Close() // 创建一个 bufio.Scanner scanner := bufio.NewScanner(file) // 逐行读取文件 for scanner.Scan() { fmt.Println(scanner.Text()) } // 检查 EOF if err := scanner.Err(); err != nil { if err == io.EOF { fmt.Println("到达文件末尾") } else { fmt.Println(err) } } }