Go语言基础(七)函数

函数定义

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
}

运行结果如下:

猜你喜欢

转载自blog.csdn.net/pangsky/article/details/84722911
今日推荐