1.函数可以返回多个值
示例1:
func div(a, b int) (int, int){
return a / b, a % b
}
2.函数返回多个值时可以起名字(仅用于非常简单的函数),对于调用者而言没有区别
示例2:
package main
import "fmt"
func div(a, b int) (q, r int){
q = a / b
r = a % b
return q, r
}
func main() {
q, _ := div(13, 3)
fmt.Println(q)
}
注意:返回多值,仅需要接收一个值,其他不取的值可使用“_”下划线表示。
3.函数作为参数
示例3:
func apply(op func(int, int) int, a, b int) int{
fmt.Printf("Calling %s with %d, %d\n", runtime.FuncForPC(reflect.ValueOf(op).Pointer()).Name(), a, b)
return op(a, b)
}
func main() {
fmt.Println(apply(func(a int, b int) int {
return int(math.Pow(float64(a), float64(b)))
}, 3, 4))
}
4.可变参数列表
func sumArgs(values ...int) int{
sum := 0
for i := range values{
fmt.Println(i)
fmt.Println(values[i])
sum += values[i]
}
return sum
}
func main() {
fmt.Println(sumArgs(2, 4, 6, 8, 10))
}
注意:Go语言中没有默认参数