Menu
Coddy logo textTech

複数の戻り値を返す

CoddyのGOジャーニー「基礎」セクションの一部 — レッスン 56/109。

Goの関数は一度に複数の値を返すことができ、これは結果とエラー情報の両方を返すのに非常に便利です。

商と余りの両方を返す関数を作成してください:

func divide(a, b int) (int, int) {
    quotient := a / b
    remainder := a % b
    return quotient, remainder
}

func main() {
    q, r := divide(7, 3)
    fmt.Println("7 ÷ 3 =", q, "with remainder", r)
}

このプログラムを実行すると、次のように出力されます:

7 ÷ 3 = 2 with remainder 1

関数はカンマで区切られた2つの値を返し、代入時に複数の変数を使用して両方の値を取得します。

返された値のうち1つだけが必要な場合は、空白識別子 _ を使用してもう一方を無視できます。例えば、商だけを取得するには次のようにします:

q, _ := divide(7, 3)
fmt.Println("Quotient:", q)

_ は余りを破棄するため、コンパイラは未使用の変数について警告を出しません。

challenge icon

チャレンジ

初心者

このチャレンジでは、Goの関数から複数の値を返す練習をします。

getPersonInfo という名前の関数があり、これは個人の名前、年齢、そして学生であるかどうかを返す必要があります。あなたのタスクは、適切な return 文を追加して関数を完成させることです。

チートシート

Goの関数は、一度に複数の値を返すことができます。括弧内に複数の戻り値の型を指定し、カンマで区切って複数の値を返します。

func divide(a, b int) (int, int) {
    quotient := a / b
    remainder := a % b
    return quotient, remainder
}

代入時に複数の変数を使用することで、複数の戻り値を受け取ることができます。

q, r := divide(7, 3)

自分で試してみよう

package main

import "fmt"

// この関数は、name、age、isStudentの3つの値を返す必要があります
func getPersonInfo() (string, int, bool) {
	// 変数はすでに定義されています
	name := "Alex"
	age := 25
	isStudent := true
	
	// TODO: 3つの値すべて(name、age、isStudent)を返してください
	
}

func main() {
	// 関数を呼び出し、戻り値を保存します
	name, age, isStudent := getPersonInfo()
	
	// 値を出力します
	fmt.Printf("Name: %s\n", name)
	fmt.Printf("Age: %d\n", age)
	fmt.Printf("Is Student: %t\n", isStudent)
}
quiz icon腕試し

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

基礎のすべてのレッスン