カテゴリ: Go言語 更新日: 2025/11/13

Go言語の複数戻り値とは?returnで複数値を返す方法と使い方をやさしく解説

Go言語の複数戻り値とは?returnで複数値を返す方法と使い方
Go言語の複数戻り値とは?returnで複数値を返す方法と使い方

先生と生徒の会話形式で理解しよう

生徒

「Go言語って、関数から複数の値を一度に返せるって聞いたんですが、本当ですか?」

先生

「はい、本当です。Go言語では関数から複数の値をまとめて返すことができます。他の言語ではちょっと面倒な処理も、Go言語ではシンプルに書けるのが特徴ですよ。」

生徒

「具体的にどうやって書くんですか?プログラミングは初めてなので、できるだけわかりやすく教えてください!」

先生

「それでは、Go言語の複数戻り値について、順番にやさしく説明していきましょう!」

1. 複数戻り値(Multiple Return Values)とは?

1. 複数戻り値(Multiple Return Values)とは?
1. 複数戻り値(Multiple Return Values)とは?

Go言語(Golang)の大きな特徴のひとつに、関数から複数の値をまとめて返せる「複数戻り値」という仕組みがあります。これは、ひとつの処理で結果だけでなく、その処理が正しく行えたかどうか、追加の情報まで返したいときにとても便利です。

たとえば、計算をしたときに「計算した答え」と「その答えが正しいかどうか」を同時に返したい場面があります。従来の言語では特別な仕組みが必要でしたが、Go言語では自然な書き方で実現できます。

イメージとしては、ひとりの人が「片手にリンゴ、もう片手にみかん」を持って帰ってくるようなものです。関数にお願いすると、一度に複数の情報を届けてくれるイメージです。

とても簡単な例で見てみましょう。


package main

import "fmt"

func hello() (string, string) {
    return "こんにちは", "Go言語"
}

func main() {
    a, b := hello()
    fmt.Println(a) // こんにちは
    fmt.Println(b) // Go言語
}

このように、helloという関数を呼び出すだけで、2つの文字列が返ってきます。特別なことをしなくても自然な文法で書けるので、プログラミング初心者でも扱いやすいのが魅力です。

2. Go言語のreturn文で複数の値を返す書き方

2. Go言語のreturn文で複数の値を返す書き方
2. Go言語のreturn文で複数の値を返す書き方

まずはシンプルな例から見てみましょう。次のコードは、2つの数を足した結果と引いた結果を一度に返す関数です。


package main

import "fmt"

func calc(a int, b int) (int, int) {
    sum := a + b
    diff := a - b
    return sum, diff
}

func main() {
    result1, result2 := calc(10, 4)
    fmt.Println("合計:", result1)
    fmt.Println("差分:", result2)
}

このように、func calcの定義部分で(int, int)と書くことで、2つのint型(整数)を返すことを意味しています。

return sum, diffと書くことで、2つの値を返しています。

3. 実行結果を見てみよう

3. 実行結果を見てみよう
3. 実行結果を見てみよう

このプログラムを実行すると、次のように表示されます。


合計: 14
差分: 6

関数から2つの値が返ってきて、それぞれ変数に分けて受け取ることができていますね。

4. 値を一部だけ受け取りたいときは「_(アンダースコア)」を使う

4. 値を一部だけ受け取りたいときは「_(アンダースコア)」を使う
4. 値を一部だけ受け取りたいときは「_(アンダースコア)」を使う

関数から2つの値が返ってきても、「1つしか使わない」こともよくあります。そんなときは、使わない値の代わりに _(アンダースコア)を使います。


package main

import "fmt"

func calc(a int, b int) (int, int) {
    sum := a + b
    diff := a - b
    return sum, diff
}

func main() {
    result1, _ := calc(8, 3)
    fmt.Println("合計だけ表示:", result1)
}

このように書くと、「差分」は使わないという意味になります。変数を無駄にしない便利な書き方です。

5. 複数戻り値の実用例:割り算で商と余りを返す

5. 複数戻り値の実用例:割り算で商と余りを返す
5. 複数戻り値の実用例:割り算で商と余りを返す

実際のプログラムでは、たとえば割り算の結果として「商(わる数の答え)」と「余り」の両方がほしいことがあります。

そんなときにも、複数戻り値を使えばとてもシンプルです。


package main

import "fmt"

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

func main() {
    q, r := divide(17, 5)
    fmt.Println("商:", q)
    fmt.Println("余り:", r)
}

このようにして、2つの値を一度に受け取ることができます。

6. 名前付き戻り値でコードを読みやすくする

6. 名前付き戻り値でコードを読みやすくする
6. 名前付き戻り値でコードを読みやすくする

Go言語では、関数の戻り値に「名前」をつけることもできます。これはコードの可読性(読みやすさ)を高めたいときに便利です。


package main

import "fmt"

func info() (name string, age int) {
    name = "田中"
    age = 25
    return
}

func main() {
    n, a := info()
    fmt.Println("名前:", n)
    fmt.Println("年齢:", a)
}

returnのあとに何も書いていないのに、ちゃんと2つの値が返ってきているのがポイントです。

7. 複数戻り値はGo言語の大きな強み

7. 複数戻り値はGo言語の大きな強み
7. 複数戻り値はGo言語の大きな強み

多くのプログラミング言語では、関数から戻せる値は1つだけという制限があります。そのため、複数の値を返したいときは、配列や構造体を使う必要がありました。

しかし、Go言語では標準の文法として複数戻り値が使えるため、とても簡単で直感的です。

また、エラー処理との組み合わせでもよく使われます。たとえば「値」と「エラーオブジェクト」を同時に返すような場面です(※エラー処理は別の記事で扱います)。

カテゴリの一覧へ
新着記事
Go言語の構造体でインターフェースを実装する方法を初心者向けにやさしく解説!
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
Go言語の文字列フォーマット!fmt.Sprintfで簡単に出力を整形する方法
Go言語のエラーと例外の違いを初心者向けに整理!わかりやすく解説
人気記事
No.1
Kotlin・Go・Swift記事の人気No1
Swiftのwhile文とrepeat while文を完全マスター!初心者にもわかる繰り返し処理の使い方と違い
No.2
Kotlin・Go・Swift記事の人気No2
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.3
Kotlin・Go・Swift記事の人気No3
Swift入門ガイド|基本構文と書き方をマスターしよう
No.4
Kotlin・Go・Swift記事の人気No4
Kotlinの正規表現(Regex)の使い方をやさしく解説!文字列操作の基本を初心者向けに学ぼう
No.5
Kotlin・Go・Swift記事の人気No5
Kotlinのコンパニオンオブジェクトとは?初心者向けに使い方と役割をわかりやすく解説!
No.6
Kotlin・Go・Swift記事の人気No6
Kotlinで画面を作る!レイアウトXMLとビューの基本操作をやさしく解説
No.7
Kotlin・Go・Swift記事の人気No7
Kotlinのwhen式を完全ガイド!初心者でもわかるパターンマッチング的な使い方
No.8
Kotlin・Go・Swift記事の人気No8
Swiftのオプショナル型とは?初心者でもわかる使い方とアンラップの基礎