Menu
Coddy logo textTech

フォーマット済みエラーの作成

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
challenge icon

チャレンジ

初心者

このチャレンジでは、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!")
	}
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン