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)
}
```