Go Fonctions littérales et fermetures


Exemple

Une fonction littérale simple, impression Hello! à stdout:

package main

import "fmt"

func main() {
    func(){
        fmt.Println("Hello!")
    }()
}

jouer sur le terrain de jeu


Une fonction littérale, imprimant l'argument str à stdout:

package main

import "fmt"

func main() {
    func(str string) {
        fmt.Println(str)
    }("Hello!")
}

jouer sur le terrain de jeu


Une fonction littérale, fermant la variable str :

package main

import "fmt"

func main() {
    str := "Hello!"
    func() {
        fmt.Println(str)
    }()
}

jouer sur le terrain de jeu


Il est possible d'affecter une fonction littérale à une variable:

package main

import (
    "fmt"
)

func main() {
    str := "Hello!"
    anon := func() {
        fmt.Println(str)
    }
    anon()
}

jouer sur le terrain de jeu