Go语言函数
Go语言函数定义方式:
func function_name( [parameter list] ) [return_types] {
函数体
}
函数定义解析:
- func:函数由 func 开始声明
- function_name:函数名称,参数列表和返回值类型构成了函数签名。
- parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。
- return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。
- 函数体:函数定义的代码集合。
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("unsupported operation:" + op)
}
}
func main() {
fmt.Println(eval(3, 4, "*"))
}
Go语言函数可以返回多个返回值:
import "fmt"
func div(a, b int)(q, r int){
return a / b, a % b
}
func main() {
q, r := div(13, 3)
fmt.Println(q, r)
// _表示不需要第二个返回值
q, _ := div(a, b)
}
package main
import "fmt"
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("unsupported operation:%s",op)
}
}
func main() {
fmt.Println(eval(13, 3, "/"))
if result, err := eval(13, 3, "x"); err != nil{
fmt.Println("Error",err)
}else{
fmt.Println(result)
}
}
运行结果:
4 <nil>
Error unsupported operation:x
可变参数列表
可变参数列表可以用于接收不定长度的参数。
实例:
package main
import "fmt"
func sum(numbers ...int) int{
s := 0
for i := range numbers{
s += numbers[i]
}
return s
}
func main() {
fmt.Println(sum(1,2,3,4,5))
}
运行结果:
15
- GO语言函数
- 返回值类型写在后面
- 可返回多个值
- 函数作为参数
- 没有默认参数,可选参数