フォーマット済みエラーの作成
CoddyのGOジャーニー「基礎」セクションの一部 — レッスン 107/109。
フォーマット済みエラーの作成... を使用すると、エラーメッセージに動的な値を含めることができます。
fmt.Errorf() 関数は、fmt.Printf() と同様に、フォーマットされた文字列を使用してエラーを作成します:
import (
"fmt"
)
func divide(a, b int) (int, error) {
if b == 0 {
return 0, fmt.Errorf("cannot divide %d by zero", a)
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
}出力は次のようになります:
Error: cannot divide 10 by zeroチャレンジ
初心者このチャレンジでは、fmt.Errorf 関数を使用してフォーマットされたエラーメッセージを作成する練習をします。ユーザー名を検証するプログラムがあり、ユーザー名が無効な場合に適切なエラーメッセージを作成する必要があります。
プログラムには、短すぎる(5文字未満)事前定義されたユーザー名があります。あなたのタスクは、無効なユーザー名と必要な最小長を含む、フォーマットされたエラーメッセージを作成することです。
チートシート
動的な値を含むフォーマットされたエラーメッセージを作成するには、fmt.Errorf() を使用します:
import "fmt"
func divide(a, b int) (int, error) {
if b == 0 {
return 0, fmt.Errorf("cannot divide %d by zero", a)
}
return a / b, nil
}自分で試してみよう
package main
import (
"fmt"
)
func main() {
// 短すぎる定義済みのユーザー名
username := "bob"
// 最小必要文字数
minLength := 5
// ユーザー名が有効かどうかを確認する
if len(username) < minLength {
// TODO: fmt.Errorfを使用して、以下を含むフォーマットされたエラーを作成する:
// 1. 無効なユーザー名
// 2. 最小必要文字数
// 例の形式: "invalid username: [username] is too short, minimum length is [minLength]"
err := // ここにコードを記述
// エラーを出力する
fmt.Println(err)
} else {
fmt.Println("Username is valid!")
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
11複合型:スライス
スライス入門スライスリテラルの宣言`make` によるスライスの作成スライスの長さと容量スライス要素へのアクセス要素の追加既存のスライス/配列のスライススライスの反復処理スライスのコピーまとめ:動的リスト14エラーハンドリングの基本
エラーの概念`error` インターフェースエラーを返す関数エラーのチェックシンプルなエラーの作成フォーマット済みエラーの作成基本的なエラーハンドリングまとめ:問題への対処