Golang 関数の匿名関数と変数スコープ
Golang プログラミング言語では、匿名関数と変数スコープは非常に便利な概念です。匿名関数とは、特定の関数名を持たない関数を指し、関数内で定義して直接呼び出すことができます。変数スコープとは、プログラム内でアクセスできる変数のスコープを指します。
匿名関数は関数内で定義でき、直接呼び出すことができます。このアプローチは非常に柔軟であり、特定の名前を割り当てずに関数定義を使用したり、関数内で関数を呼び出したりすることができます。以下は例です:
package main import "fmt" func main() { func() { fmt.Println("I am an anonymous function!") }() // 直接调用匿名函数 // 定义一个匿名函数并将其赋值给变量f f := func() { fmt.Println("I am another anonymous function!") } // 调用变量f f() }
上の例では、main
関数内に 2 つの匿名関数を定義しました。最初の匿名関数は変数に割り当てられず、関数内で直接呼び出されます。 2 番目の無名関数は変数f
に割り当てられ、f()
を呼び出すことによって実行されます。
匿名関数は通常の関数と同じで、パラメータを受け取り、値を返すことができます。パラメータと戻り値を含む無名関数の例を次に示します。
package main import "fmt" func main() { add := func(a, b int) int { // 定义一个带参数和返回值的匿名函数 return a + b } result := add(2, 3) // 调用匿名函数并将结果赋值给变量result fmt.Println(result) // 输出5 }
この例では、2 つのパラメータa
および ## を受け入れる無名関数add
を定義します。 #bとそれらの合計を返します。
add関数を呼び出し、戻り値を変数
resultに代入すると、結果を取得して出力できます。
package main import "fmt" func main() { var x = 10 // x具有全局作用域,可以在整个程序中访问 func() { var y = 5 // y具有局部作用域,只能在匿名函数内部访问 fmt.Println(x + y) }() // fmt.Println(x + y) 无法访问变量y }
xはグローバル スコープを持ち、
main関数内で定義されており、プログラム全体からアクセスできます。変数
yはローカル スコープを持ち、無名関数内で定義され、無名関数内でのみアクセスできます。無名関数内では
xにアクセスし、それを
yに追加して出力できます。ただし、匿名関数の外で変数
yにアクセスしようとすると、エラーが報告されます。
以上がGolang 関数における匿名関数と変数スコープの適用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。