5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Go クロージャを理解する

Last updated at Posted at 2019-12-06

Goのクロージャ(他の言語でもありますよね)について、よく理解できていなかったので調べてみた

クロージャとは

クロージャ(クロージャー、英語: closure)、関数閉包はプログラミング言語における関数オブジェクトの一種。いくつかの言語ではラムダ式や無名関数にて利用可能な機能・概念である。引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。

うーん...
簡単に言うと、「ローカル変数を参照している関数内の関数」ってこと...?

main.go
package main

import "fmt"

func add() func() int {
  n := 0
  
  return func() int {
    n++
    return n
  }
}

func main() {
  a := add()
  fmt.Println(a())
}

クロージャを使わない場合、グローバル変数を用意したりする必要があるので、クロージャを使いなれておくと便利らしい

参考

【学習GOLANGシリーズ】クロージャ

5
2
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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?