Skip to content

Functions

Functions in Go (Golang) are first-class citizens, meaning they can be assigned to variables, passed as arguments, and returned from other functions.

Functions Example

Sum function

package main
import "fmt"
func sum(a int, b int) int {
return a + b
}
func main() {
fmt.Println(sum(2, 3))
}

Variants

Parameters: You can define multiple parameters of the same type in a single declaration:

func add(a, b int) int {
return a + b
}

Return Types: You can return multiple values from a function:

package main
import "fmt"
func calculator(a, b int) (int, int) {
return a + b, a - b
}
func main() {
sum, sub := calculator(2, 3)
fmt.Println(sum, " ", sub)
}

Named Return Values

You can also define named return values in a function. This allows you to specify the return values in the function signature, making the code easier to read and understand:

package main
import "fmt"
func calculator(a, b int) (sum int, sub int) {
sum = a + b
sub = a - b
return
}
func main() {
sum, sub := calculator(2, 3)
fmt.Println(sum, " ", sub)
}

Anonymous functions

package main
import "fmt"
func main() {
sum, sub := func(a, b int) (sum int, sub int) {
sum = a + b
sub = a - b
return
}(2, 3)
fmt.Println(sum, " ", sub)
}

Functions as arguments

Functions can take other functions as arguments

package main
import "fmt"
func sum(a int, b int) int {
return a + b
}
func sub(a int, b int) int {
return a - b
}
func calculator(a int, b int, fn func(int, int) int) int {
return fn(a, b)
}
func main() {
ans := calculator(1, 2, sum)
fmt.Println(ans)
}

Returning functions

package main
import "fmt"
func multiplier(factor int) func(int) int {
return func(a int) int {
return a * factor
}
}
func main() {
double := multiplier(2)
tripple := multiplier(3)
fmt.Println(double(3))
fmt.Println(tripple(3))
}