Go language provides a special feature known as an anonymous function. An anonymous function is a function which doesn’t contain any name. It is useful when you want to create an inline function. In Go language, an anonymous function can form a closure. An anonymous function is also known as function literal.
Syntax:
func(parameter_list)(return_type){
// code..
// Use return statement if return_type are given
// if return_type is not given, then do not
// use return statement
return
}()
Example:
// Go program to illustrate how// to create an anonymous functionpackage main import "fmt" func main() { // Anonymous function func(){ fmt.Println("Welcome! to GeeksforGeeks") }() } |
Output:
Welcome! to GeeksforGeeks
Important Points:
- In Go language, you are allowed to assign an anonymous function to a variable. When you assign a function to a variable, then the type of the variable is of function type and you can call that variable like a function call as shown in the below example.
Example:
// Go program to illustrate// use of an anonymous functionpackage mainimport"fmt"func main() {// Assigning an anonymous// function to a variablevalue := func(){fmt.Println("Welcome! to GeeksforGeeks")}value()}Output:
Welcome! to GeeksforGeeks
- You can also pass arguments in the anonymous function.
Example:
// Go program to pass arguments// in the anonymous functionpackage mainimport"fmt"func main() {// Passing arguments in anonymous functionfunc(ele string){fmt.Println(ele)}("GeeksforGeeks")}Output:
GeeksforGeeks
- You can also pass an anonymous function as an argument into other function.
Example:
// Go program to pass an anonymous// function as an argument into// other functionpackage mainimport"fmt"// Passing anonymous function// as an argumentfunc GFG(i func(p, q string)string){fmt.Println(i ("Geeks","for"))}func main() {value:= func(p, q string) string{returnp + q +"Geeks"}GFG(value)}Output:
GeeksforGeeks
- You can also return an anonymous function from another function.
Example:
// Go program to illustrate// use of anonymous functionpackage mainimport"fmt"// Returning anonymous functionfunc GFG() func(i, j string) string{myf := func(i, j string)string{returni + j +"GeeksforGeeks"}returnmyf}func main() {value := GFG()fmt.Println(value("Welcome ","to "))}Output:
Welcome to GeeksforGeeks
