0
0

【Golang】無名関数を関数の引数もしくはリターンで使用する

Posted at

自分に対する備忘録として残すもの

無名関数を関数の引数で使用する

サンプルコード

package main

import "fmt"

// 関数applyFunctionは、無名関数を引数に取り、その関数を実行します。
func applyFunction(f func(int) int, x int) int {
    // 引数として渡された無名関数を実行し、結果を返す
    return f(x)
}

func main() {
    // 無名関数を作成し、その場で引数として渡す
    result := applyFunction(func(n int) int {
        return n * 2
    }, 5)

    // 結果を出力
    fmt.Println("Result:", result)
}

引数に渡す無名関数は以下の通りでも良い。(個人的にはこちらの方が読みやすいから好き)

package main

import "fmt"

// 関数applyFunctionは、無名関数を引数に取り、その関数を実行します。
func applyFunction(f func(int) int, x int) int {
    // 引数として渡された無名関数を実行し、結果を返す
    return f(x)
}

func main() {
    // 無名関数を作成し、その場で引数として渡す
    f1 := func(n int) int {
        return n * 2
    }
    
    result := applyFunction(f1, 5)

    // 結果を出力
    fmt.Println("Result:", result)
}

無名関数をリターンする関数

package main

import "fmt"

// createMultiplierは、倍率を引数に取り、その倍率で数値を乗算する無名関数を返します。
func createMultiplier(factor int) func(int) int {
    // 引数として与えられた倍率で数値を乗算する無名関数を作成し、それを返す
    return func(x int) int {
        return x * factor
    }
}

func main() {
    // 倍率2の無名関数を作成
    // multiplierはリターンされた無名関数
    multiplier := createMultiplier(2)

    // 無名関数の引数に値を渡して、無名関数を実行する。
    result := multiplier(5)

    // 結果を出力
    fmt.Println("Result:", result)
}

サンプル等についてはChatGPTで生成しております。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0