Golangの関数についてー関数値/コールバック関数/無名関数

概要

Golangの関数において、以下3つについてまとめる。

  • 関数値として扱う場合の関数
  • 関数を引数として扱う関数
  • 無名関数の定義
    • 関数値
    • クロージャー

関数値として扱う場合の関数

コールバック関数

関数sumは2つの引数を定義している。

  • 型がintのv
  • 型が、intを引数として定義しており、戻り値がintである関数のr
    • コールバック関数を引数として定義する場合は、引数であっても戻り値を記述する必要がある。

ちなみにmain関数内で実行されているaddにはアドレスが格納されている。

PHPでは可変変数を利用したり、call_user_funcを使ってコールバックを実現していた。

無名関数の定義

関数値

無名関数を関数値として扱う場合の例

クロージャー

無名関数としてクロージャーとして定義する場合の例

クロージャーを使うとスコープ範囲がオープンになるので、countの値をキープできる。

所感

雰囲気でコールバック関数を使っている節があるので、コールバック関数の仕組みを深掘りしたいと思った。