Functions
Functions in Go (Golang) are first-class citizens, meaning they can be assigned to variables, passed as arguments, and returned from other functions.
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))}