Go言語(golang)のファンクション

※当サイトではアフィリエイト広告を利用しています

目次

Go言語(golang)のファンクションとは

Golangの関数(function)は、一連の処理をまとめて実行できる構造です。関数はプログラムの基本的なビルディングブロックであり、コードを整理し、再利用可能にするための重要な要素です。以下に、Golangの基本的な関数の書き方と使い方を示します。

Tour of Goを参考にしています。

Go言語(golang)のファンクション

関数の定義と呼び出し

package main

import "fmt"

// add 関数の定義
func add(x int, y int) int {
    return x + y
}

func main() {
    // 関数の呼び出しと結果の表示
    result := add(3, 5)
    fmt.Println("Result:", result)
}

結果

Result: 8

この例では、add という名前の関数を定義しています。この関数は2つの整数を受け取り、それらを足して結果を返します。main 関数内で add 関数を呼び出しています。

複数の戻り値を持つ関数(Multiple results)

package main

import "fmt"

// divide 関数の定義(戻り値が2つ)
func divide(x, y float64) (float64, error) {
    if y == 0 {
        return 0, fmt.Errorf("division by zero is not allowed")
    }
    result := x / y
    return result, nil
}

func main() {
    // 関数の呼び出しと結果の表示
    result, err := divide(10, 2)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Result:", result)
    }
}

結果

Result: 5

この例では、divide という名前の関数を定義しています。この関数は2つの浮動小数点数を受け取り、1つ目の数を2つ目の数で割った結果と、エラー(ゼロでの割り算がある場合)を返します。

無名関数(クロージャ)

package main

import "fmt"

func main() {
    // 無名関数の定義と呼び出し
    add := func(x, y int) int {
        return x + y
    }

    result := add(3, 5)
    fmt.Println("Result:", result)
}

結果

Result: 8

この例では、無名関数(匿名関数)を定義しています。これは変数 add に代入され、その後呼び出されています。無名関数は変数に代入することで、関数の動的な生成やクロージャの実装が可能です。

これらはGolangで関数を使う基本的な例です。関数はプログラムの中でコードを構造化し、再利用性を高めるための重要な要素です。

Functions continued

関数の2つ以上の引数が同じ型である場合には、最後の型を残して省略して記述できます。

この例では、x int, y intx, y int へ省略できます。

package main

import "fmt"

func add(x, y int) int {
	return x + y
}

func main() {
	fmt.Println(add(42, 13))
}

結果

55

Named return values

Goでの戻り値となる変数に名前をつける( named return value )ことができます。戻り値に名前をつけると、関数の最初で定義した変数名として扱われます。

この戻り値の名前は、戻り値の意味を示す名前とすることで、関数のドキュメントとして表現するようにしましょう。

名前をつけた戻り値の変数を使うと、 return ステートメントに何も書かずに戻すことができます。これを “naked” return と呼びます。

例のコードのように、naked returnステートメントは、短い関数でのみ利用すべきです。長い関数で使うと読みやすさ( readability )に悪影響があります。

package main

import "fmt"

func split(sum int) (x, y int) {
	x = sum * 4 / 9
	y = sum - x
	return
}

func main() {
	fmt.Println(split(17))
}

結果

7 10
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

テック企業でプレイングマネージャーをしている Jun です。プログラミングの基礎をはじめ、組織やマネジメントについてブログを書いています。ハードスキル、ソフトスキルどちらも磨きたい方を対象にしています。一緒に学んで人生を楽しくしていきましょう!

目次