EOF エラーは Go 言語でよく発生し、ファイルの末尾から読み取るときに発生します。処理方法には、1. io.EOF を明示的にチェックする、2. io.EOF 型アサーションを使用する、3. ラッピング エラーを使用するなどがあります。 EOF エラーを処理すると、プログラムが予期せずクラッシュすることがなくなり、プログラムがより堅牢になります。
Go 言語 EOF エラー ガイド: 一般的なトラップを回避する
EOF (End-Of-File) エラーは、Go 言語で最も一般的です。 Go 言語 プログラムがファイルの終わりに達した io.Reader
から読み取ろうとしたときに発生する一般的なエラーの 1 つ。 EOF エラーの処理は、プログラムが予期せずクラッシュするのを防ぐため重要です。
EOF エラーは通常、io.EOF
定数で表されます。プログラムがファイルの末尾からデータを読み取ろうとすると、Read()
メソッドは (n, io.EOF)
を返します。ここで、n
は単語の読み取りセクション番号。
package main import ( "fmt" "os" ) func main() { file, err := os.Open("text.txt") if err != nil { fmt.Println(err) return } defer file.Close() buf := make([]byte, 1024) n, err := file.Read(buf) if err == io.EOF { fmt.Println("EOF reached") } else if err != nil { fmt.Println(err) return } fmt.Println("Read", n, "bytes") }
EOF エラーを処理するにはいくつかの方法があります:
1. EOF を明示的に確認します:
最も簡単な方法は、io.EOF
を明示的にチェックすることです。
if err == io.EOF { // EOF reached } else if err != nil { // Other error occurred }
2. io.EOF
型アサーションを使用します:
io.EOF
型は error # を実装します## インターフェイスなので、型アサーションを使用して EOF を確認できます:
if ok := errors.Is(err, io.EOF); ok { // EOF reached } else { // Other error occurred }
3. ラッパー エラーを使用します:
EOF エラーに関する詳細なコンテキストが必要な場合は、カスタム エラーでラップすることができます:err = fmt.Errorf("EOF reached: %w", err)
package main import ( "fmt" "io/ioutil" "os" ) func main() { file, err := os.Open("text.txt") if err != nil { fmt.Println(err) return } defer file.Close() data, err := ioutil.ReadAll(file) if err != nil { fmt.Println(err) return } fmt.Print(string(data)) }
package main import ( "fmt" "io/ioutil" "os" ) func main() { file, err := os.Open("text.txt") if err != nil { fmt.Println(err) return } defer file.Close() data, err := ioutil.ReadAll(file) if err == io.EOF { fmt.Println("EOF reached") } else if err != nil { fmt.Println(err) return } fmt.Print(string(data)) }
以上がGo EOF エラー ガイド: よくある落とし穴を回避するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。