メインコンテンツまでスキップ

Goの関数を作成しよう

GO言語では、関数はfuncキーワードを使って定義されます。 関数はコードの再利用性を高め、プログラムの構造を整理するために重要な役割を果たします。

package main

import (
"fmt"
)

// 関数の定義
func display() {
fmt.Println("Hello World!!")
}

// メイン関数で関数を呼び出す
func main() {
display()
}

関数の構成

関数は以下のように定義します。

  • funcで定義
  • 引数の型を書く
  • 戻り値の型を書く
func 関数名(引数11, 引数22, ...) 戻り値の型 {
// 関数の処理
}

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

複数戻り値

Go言語では、関数は複数の戻り値を返すことができます。 これにより、エラー処理や複数の結果を一度に返すことが容易になります。

※ Goは例外ではなくerrorを戻り値で返す文化です。

func div(a, b int) (int, error) {
if b == 0 {
// 0の割り算、0とエラーを返す
return 0, fmt.Errorf("zero division")
}
// 割り算正常な結果を返す
return a / b, nil
}
func main() {
result, err := div(10, 2)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
}

無名関数

Go言語では、名前のない無名関数を定義することもできます。 無名関数は、関数を変数に代入したり、即時に実行したりするのに便利です。

func main() {
// 無名関数を変数に代入
greet := func(name string) {
fmt.Println("Hello,", name)
}
// 無名関数を呼び出す
greet("Alice")
}

即時関数

無名関数は即時に実行することもできます。 これにより、一時的な処理を簡潔に記述できます。

func main() {
// 即時関数の定義と実行
func(message string) {
fmt.Println(message)
}("Hello from immediate function!")
}

defer文と関数

Go言語では、defer文を使って関数の実行を遅延させることができます。 deferは、関数が終了する直前に指定した関数を実行します。 これにより、リソースの解放や後片付けを簡単に行うことができます。

    fmt.Println("Start")
defer fmt.Println("This will be printed last")
fmt.Println("End")
}

出力:

Start
End
This will be printed last

まとめ

Goの関数は複数戻り値とerror処理が特徴。 deferで後処理、無名関数や即時関数も活用しよう。

※ 初心者向け面接質問まとめ

質問答え方例(短く)
Goの関数定義方法は?func name(args) returnType
Goは例外ありますか?基本なく、errorを戻り値として返します
複数戻り値の例は?(value, error)がよく使われる
deferとは?関数の最後に実行される処理
ポインタを使うとき?値を変更したいとき