函数定义
Go 语言函数定义格式如下:
func function_name( [parameter list] ) [return_types] {
函数体
}
函数定义解析:
- func:函数由 func 开始声明
- function_name:函数名称,函数名和参数列表一起构成了函数签名。
- parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。
- return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。
- 函数体:函数定义的代码集合。
package main
import "fmt"
func eval(a,b int,op string) int{
switch op {
case "+":
return a+b
case "-":
return a-b
case "*":
return a*b
case "/":
return a/b
default:
panic("unsupport operation:"+op)
}
}
func main() {
fmt.Println(eval(3,4,"+"))
}
运行结果如下:
但是当传入的运算符是“x”的时候,程序会中断报错如下:
为了避免此种情况,我们可以给函数返回多个值如下:
func eval(a,b int,op string) (int,error){
switch op {
case "+":
return a+b,nil
case "-":
return a-b,nil
case "*":
return a*b,nil
case "/":
return a/b,nil
default:
return 0,fmt.Errorf("unsupport operation:%s",op)
}
}
程序运行结果如下:
复合函数
函数参数中包含函数
func apply(op func(int, int) int,a,b int) int {
return op(a,b)
}
函数的可变参数
func sum(numbers ...int) int {
s := 0
for i := range numbers{
s += i
}
return s
}
运行结果如下: