函数
4
https://tour.go-zh.org/basics/4
go
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}func add(x int, y int) 可简写为 func add(x, y int)
多个相同类型可简写。
返回多个值
https://tour.go-zh.org/basics/6
go
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("hello", "world")
fmt.Println(a, b)
}named return values / 带名字的返回值
https://tour.go-zh.org/basics/7
go
package main
import "fmt"
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
func main() {
fmt.Println(split(17))
}关键点在于 (x, y int) 和空的 return
裸 return(bare return)会自动返回 x 和 y
适用于短函数,优点是知道返回值
函数参数
go
func compute(fn func(float64, float64) float64) float64 {
return fn(3, 4)
}
func main() {
hypot := func(x, y float64) float64 {
return math.Sqrt(x*x + y*y)
}
fmt.Println(hypot(5, 12))
fmt.Println(compute(hypot))
fmt.Println(compute(math.Pow))
}闭包
go
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}