Go 速習チュートリアル

Go 言語の関数のパラメータと引数

1. パラメータと引数(Arguments)

関数には、パラメータとして情報を渡すことができます。パラメータは、関数内部で変数として機能します。

パラメータとその型(Type)は、関数名の後の丸括弧内に指定します。パラメータは必要に応じていくつでも追加でき、各パラメータをカンマで区切ります。

2. シンタックス

func FunctionName(param1 type, param2 type, param3 type) {
  // 実行されるコード
}

3. パラメータを持つ関数の実装例

以下の例では、string型のパラメータを1つ(fname)持つ関数を示しています。familyName()関数が呼び出される際、名前(例:Liam)を渡します。この名前は関数内部で使用され、異なるファーストネームと共通の苗字を出力します。

3.1. 実装コード

package main
import ("fmt")

// fname という string 型のパラメータを持つ関数
func familyName(fname string) {
  fmt.Println("こんにちは", fname, "Refsnesさん")
}

func main() {
  familyName("Liam")
  familyName("Jenny")
  familyName("Anja")
}

実行結果:

こんにちは Liam Refsnesさん
こんにちは Jenny Refsnesさん
こんにちは Anja Refsnesさん

       注意: 関数に渡される実際の値は引数(Argument)と呼ばれます。上記の例では、fname はパラメータであり、LiamJennyAnja引数となります。

4. 複数のパラメータ

関数内部には、必要に応じて複数のパラメータを追加することが可能です。

4.1. 実装例

package main
import ("fmt")

// fname (string型) と age (int型) の2つのパラメータを持つ関数
func familyName(fname string, age int) {
  fmt.Println("こんにちは", age, "歳の", fname, "Refsnesさん")
}

func main() {
  familyName("Liam", 3)
  familyName("Jenny", 14)
  familyName("Anja", 30)
}

実行結果:

こんにちは 3 歳の Liam Refsnesさん
こんにちは 14 歳の Jenny Refsnesさん
こんにちは 30 歳の Anja Refsnesさん

5. 複数パラメータ使用時のルール

複数のパラメータを扱う場合、関数呼び出し時にはパラメータと同じ数の引数を渡す必要があり、さらにそれらは定義された順序通りに渡さなければなりません。個数や型、順序が一致しない場合、コンパイルエラーの原因となります。