Anonymous Functions in Go
In this tutorial, we are going to discuss anonymous functions in the Go language. Go language provides a special feature known as an anonymous function.
An anonymous function is a function that doesn’t contain any name. It is useful when you want to create an inline function.
In the Go language, an anonymous function can form a closure. An anonymous function is also known as function literal.
Declaring Anonymous Functions
Declaration syntax for anonymous function is pretty straightforward. It is no different in syntax than a regular function.
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
}()
package main
import "fmt"
func main() {
func() {
fmt.Println("Welcome to Waytoeasylearn..!!")
}()
}
Welcome to Waytoeasylearn..!!
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.
package main
import "fmt"
func main() {
value := func() {
fmt.Println("Welcome to Waytoeasylearn..!!")
}
value()
}
Please note that you can also pass arguments in the anonymous function.
package main
import "fmt"
func main() {
func(message string) {
fmt.Println(message)
}("Welcome to Waytoeasylearn..!!")
}
You can also pass an anonymous function as an argument into other function.
package main
import "fmt"
func print(i func(p, q string)string){
fmt.Println(i ("Welcome ", "to "))
}
func main() {
value:= func(p, q string) string{
return p + q + "Waytoeasylearn..!!"
}
print(value)
}
You can also return an anonymous function from another function.
package main
import "fmt"
func display() func(i, j string) string{
myf := func(i, j string)string{
return i + j + "Waytoeasylearn..!!"
}
return myf
}
func main() {
value := display()
fmt.Println(value("Welcome ", "to "))
}
Please note that anonymous functions can accept inputs and return outputs, just as standard functions do.