function in Go

A function can take zero or more arguments. Notice that the type comes after the variable name. 
```
package main
import "fmt"

func add(x int, y int) int {
	return x + y
}

func main() {
	fmt.Println(add(42, 13))
}
```
When two or more consecutive named function parameters share a type, you can omit the type from all but the last. 
```
func add(x , y int) int {
	return x + y
}
```
A function can return any number of results. 
```
func swap(x, y string) (string, string) {
	return y, x
}
```

In Go, function values may be used as function arguments and return values.
```
package main

import (
    "fmt"
)

func draw(fn func()){
    fn()
}

func main() {
    drawCircle := func() {
        fmt.Println("Circle")
    }
    drawCircle()
    draw(drawCircle)
}
```