導入
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))にするとエラーになります。関数が返す個数と、受け取る変数の個数は一致させる必要があります。
演習
divmod(23, 4) を呼んで、商 5 あまり 3 と表示されるようにしてください。
ヒント1を見る
変えるのは divmod(17, 5) の引数だけです。
ヒント2を見る
23 ÷ 4 は商が5、あまりが3です。戻り値は q, r := ... の順に受け取ります。