Anonymous function in Go Language
An anonymous function is a function that doesn’t have a name. It is useful when you want to create an inline function. In Go, an anonymous function can also form a closure. An anonymous function is also known as a function literal.
Example
package main
import "fmt"
func main() {
// Anonymous function
func() {
fmt.Println("Welcome! to GeeksforGeeks")
}()
}
Output
Welcome! to GeeksforGeeks
Syntax:
func(parameter_list)(return_type) {
// code..
// Use return statement if return_type is given
// if return_type is not given, then do not
// use return statement
return
}()
Assigning to a Variable
You can assign an anonymous function to a variable. This variable can then be called like a regular function.
package main
import "fmt"
func main() {
// Assigning an anonymous function to a variable
value := func() {
fmt.Println("Welcome! to GeeksforGeeks")
}
value()
}
Output
Welcome! to GeeksforGeeks
Passing Arguments
Anonymous functions can accept arguments.
package main
import "fmt"
func main() {
// Passing arguments in anonymous function
func(ele string) {
fmt.Println(ele)
}("GeeksforGeeks")
}
Output
GeeksforGeeks
Passing as Arguments
You can also pass an anonymous function as an argument to another function.
package main
import "fmt"
// Passing anonymous function as an argument
func GFG(i func(p, q string) string) {
fmt.Println(i("Geeks", "for"))
}
func main() {
value := func(p, q string) string {
return p + q + "Geeks"
}
GFG(value)
}
Output
GeeksforGeeks
Returning Anonymous Functions
You can return an anonymous function from another function.
package main
import "fmt"
// Returning anonymous function
func GFG() func(i, j string) string {
myf := func(i, j string) string {
return i + j + "GeeksforGeeks"
}
return myf
}
func main() {
value := GFG()
fmt.Println(value("Welcome ", "to "))
}
Output
Welcome to GeeksforGeeks
Conclusion
Anonymous functions in Go are versatile and powerful. They can be used for creating inline functions, closures, and even for passing and returning functions. Understanding how to use them effectively can greatly enhance your programming in Go.