【Go】31、golang 函数

1、golang函数简介
  • 函数的go语言中的一级公民,我们把所有的功能单元都定义在函数中,可以重复使用。函数包含函数的名称参数列表返回值类型,这些构成了函数的签名(signature)
2、go语言中函数特性
  • go语言中有3种函数:普通函数、匿名函数(没有名称的函数)、方法(定义在struct上的函数)
  • go语言中不允许函数重载(overload),也就是说不允许函数同名
  • go语言中的函数不能嵌套函数,但是可以嵌套匿名函数
  • 函数是一个值,可以将函数赋值给变量,使得这个变量也成为函数
  • 函数可以作为参数传递给另一个函数
  • 函数的返回值可以是一个函数
  • 函数调用的时候,如果有参数传递给函数,则先拷贝参数的副本,再将副本传递给函数
  • 函数参数可以没有名称
3、go语言中函数的定义和调用
  • 函数在使用之前必须先定义,可以调用函数来完成某个任务。函数可以重复调用,从而达到代码重用。
  • 定义语法:
func function_name([parameter list]) [return_types] {
	函数体
}
    • 语法解析:
      • func:函数由func开始声明
      • function_name:函数名称,函数名和参数列表一起构成了函数签名
      • [parameter list]:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数,参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数
      • return_types:返回类型,函数返回一列值。return_types是该列值的数据类型。有些功能不需要返回值,只能情况下,return_types不是必须的
      • 函数体:函数定义的代码集合
4、go语言函数定义实例
  • 定义一个求和函数
func sum(a int, b int) (ret int) {
	ret = a + b
	return ret
}

func main() {
	r := sum(1, 2)
	fmt.Printf("r: %v\n", r)
}
# 返回结果:
    r: 3
  • 定义一个比较两个数大小的函数
func compare(a int, b int) (Max int, sum int) {
	if a > b {
		Max = a
	} else {
		Max = b
	}
	sum = a + b
	return Max, sum
}

func main() {
	r, s := compare(1, 2)
	fmt.Printf("r: %v\n", r)
	fmt.Printf("s: %v\n", s)
}
# 输出结果:
    r: 2
    s: 3
5、go语言函数调用
  • 当我们要完成某个任务时,可以调用函数来完成。调用函数要传递参数,如果有返回值可以获得返回值
func main() {
	r := sum(1, 2)
	fmt.Printf("r: %v\n", r)
	r, s := compare(1, 2)
	fmt.Printf("r: %v\n", r)
	fmt.Printf("s: %v\n", s)
}
posted @ 2022-07-10 14:12  郭祺迦  阅读(34)  评论(0编辑  收藏  举报