関数の定義と呼び出し

Go言語における「関数の定義と呼び出し」は、プログラムの構造を整理し、再利用可能な処理を作るための重要な要素です。以下に、Goにおける関数の基本構文、引数と戻り値の扱い、呼び出し方法などを詳しく説明します。


1. 関数の定義

Go言語では、関数は func キーワードを使って定義します。

基本構文

go
func 関数名(引数の定義) 戻り値の型 { // 関数の処理 }

go
func greet() { fmt.Println("Hello, World!") }

この関数 greet は引数も戻り値も持たない単純な関数です。


2. 関数の呼び出し

定義した関数は、その関数名を使って呼び出すことができます。

go
greet() // 関数を呼び出す

3. 引数付き関数

関数に引数を渡すことで、汎用性を高めることができます。

go
func add(a int, b int) int { return a + b }

この関数は2つの int 型の引数を受け取り、int 型の合計を返します。

go
result := add(3, 5) fmt.Println(result) // 出力: 8

複数の引数が同じ型の場合、まとめて書けます

go
func multiply(a, b int) int { return a * b }

4. 複数の戻り値

Goでは、関数から複数の値を返すことができます。

go
func divide(a, b int) (int, int) { quotient := a / b remainder := a % b return quotient, remainder }
go
q, r := divide(10, 3) fmt.Println(q, r) // 出力: 3 1

5. 名前付き戻り値

戻り値に名前をつけることも可能です。これにより、return 文で変数名を省略できます。

go
func rectangleArea(width, height int) (area int) { area = width * height return // areaが自動的に返される }

6. 無名関数(関数リテラル)

Goでは、関数を変数として定義することもできます。

go
add := func(x, y int) int { return x + y } fmt.Println(add(2, 3)) // 出力: 5

7. 再帰関数

関数内で自分自身を呼び出すことも可能です。これを再帰と呼びます。

例:階乗を求める再帰関数

go
func factorial(n int) int { if n == 0 { return 1 } return n * factorial(n-1) }

まとめ

概念 説明
func 関数を定義するキーワード
引数 関数に渡す値(型を明示する)
戻り値 関数が返す値(複数も可)
名前付き戻り値 戻り値に名前をつけて省略的なreturnが可能
無名関数 関数を変数に代入して使用可能
再帰関数 自身を呼び出す関数

Goの関数は構造が明確で、型安全なプログラミングができるよう設計されています。基本をしっかり押さえて、関数を活用した構造的なコードを目指しましょう。

生成日:2025/05/03