`error` インターフェース
CoddyのGOジャーニー「基礎」セクションの一部 — レッスン 103/109。
Goでは、errorインターフェースはエラー状態を表す組み込み型です。Error()メソッドを実装する任意の型は、このインターフェースを満たします。
エラーインターフェースの定義は次の通りです:
type error interface {
Error() string
}カスタムエラー型を作成します:
type MyError struct {
Message string
}
func (e MyError) Error() string {
return e.Message
}
func main() {
err := MyError{Message: "something went wrong"}
fmt.Println(err)
}出力は次のようになります:
something went wrongチャレンジ
簡単このチャレンジでは、Goのerrorインターフェースを扱います。errors.New()関数を使用してカスタムエラーを作成し、エラーが存在するかどうかを確認する必要があります。
コードにはすでにエラーを返す関数が含まれています。あなたのタスクは、エラーがnilでないことを確認し、適切なメッセージを出力することです。
チートシート
error インターフェースは、エラー状態を表す組み込み型です。Error() メソッドを実装するすべての型は、このインターフェースを満たします:
type error interface {
Error() string
}カスタムエラー型を作成します:
type MyError struct {
Message string
}
func (e MyError) Error() string {
return e.Message
}
func main() {
err := MyError{Message: "something went wrong"}
fmt.Println(err) // 出力: something went wrong
}errors.New() を使用して単純なエラーを作成し、エラーが nil でないかどうかを確認します。
自分で試してみよう
package main
import (
"errors"
"fmt"
)
func main() {
// この関数はエラーを返します
err := generateError()
// TODO: err が nil でないか確認してください
// err が nil でない場合、「Error occurred: 」に続けてエラーメッセージを出力します
// ヒント: if 文を使用して err != nil かどうかを確認します
// この行はエラーが発生しなかった場合にのみ実行されます
fmt.Println("Program completed successfully")
}
// この関数はエラーを生成します
func generateError() error {
return errors.New("something went wrong")
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
11複合型:スライス
スライス入門スライスリテラルの宣言`make` によるスライスの作成スライスの長さと容量スライス要素へのアクセス要素の追加既存のスライス/配列のスライススライスの反復処理スライスのコピーまとめ:動的リスト14エラーハンドリングの基本
エラーの概念`error` インターフェースエラーを返す関数エラーのチェックシンプルなエラーの作成フォーマット済みエラーの作成基本的なエラーハンドリングまとめ:問題への対処