導入
Go の関数は 値を2つ以上まとめて返せます。「商とあまり」「結果とエラー」のように、関係する値を一度に返すのに便利です。
説明
package main
import "fmt"
// 商とあまりの2つを返す
func divmod(a, b int) (int, int) {
return a / b, a % b
}
func main() {
q, r := divmod(17, 5)
fmt.Printf("商 %d あまり %d\n", q, r) // 商 3 あまり 2
}
func divmod(a, b int) (int, int)… 戻り値の型をカッコで囲んで2つ書きます。- 呼び出し側は
q, r := ...と2つの変数で受け取ります。 - 片方が不要なら
_で捨てます:q, _ := divmod(17, 5)。
この「複数の値を返す」仕組みが、Go のエラー処理(次のレッスン)の土台になります。
やってみよう
q, r := divmod(17, 5) の受け取りを1つ(q := divmod(17, 5))にするとエラーになります。関数が返す個数と、受け取る変数の個数は一致させる必要があります。