常量和变量都是数据的一种载体,数据通过不同的运算符参与运算时,对计算的流程进行一定程度的控制便是流程控制,并且低于较多的数据通过内置容器进行存储,那么之后要干嘛呢?就是通过以上的所有概念进行整合,将其抽象到一个模块中去完成某一功能,这便是本篇的主题——函数

函数,并不是一个新概念,在不同语言中都能听到函数这个名词,那么在Go语言中函数又该如何使用呢?它到底与其他语言又有哪些差异呢?

1、函数定义
func
func 函数名(参数列表) (返回参数列表) {
   函数体
}

定义解析:

funcfunc

根据函数参数情况可分为三类,接下来展开具体说明。

  • 固定参数
  • 可变参数
  • 固定参数和可变参数

1.1 固定参数的函数定义

函数定义格式如下:

func 函数名(参数列表) (返回参数列表) {
   函数体
}

例如,两数相乘:

func multipleForTowNum(num1 int, num2 int) int {
	result := num1 * num2
	return result
}

1.2 可变参数的函数定义

Go 语言中还支持另外一种可变参数的函数,其函数定义格式如下:

func 函数名(v...T) (返回参数列表) {
   函数体
}
v...TvT

例如,实现多数相乘:

func multipleForNums(nums ...int) int {
	var result int = 1
	for _, num := range nums {
		result = result * num
	}
	return result
}
numsint

1.3 固定参数和可变参数的函数定义

上面介绍了固定参数、可变参数的定义,如果存在固定参数和可变参数共存的情况,该如何定义呢?

其格式如下:

func 函数名(固定参数列表, v...T) (返回参数列表) {
   函数体
}

例如,在两数相加基础上,再进行多数的相乘:

func multipleForTowNums(num1 int, num2 int, nums ...int) int {
	result := num1 + num2
	for _, num := range nums {
		result = result * num
	}
	return result
}
2、函数分类

函数从大的方面分类两类:自定义函数、内置函数。

2.1 自定义函数

func

2.2 内置函数

lenappend
makechannellenmapchannelcapchanneldeletemapappendcopynewmapchannelcomplexrealimagprintprintlnclosechannelpanicrecoverpanic
3、函数返回值

在1、函数定义中我们知道函数在使用调用时,通常会给调用者返回一个结果,这个结果被称为函数的返回值。

一个函数可以没有返回值,也可以有一个或多个返回值。

3.1 多返回值

例如,将两个数进行交换,并返回交换后的两数:

func swap(x, y string) (string, string) {
	return y, x
}

3.2 空白标识符

_
swap
package main

import "fmt"

func main() {
	x, _ := swap(1, 5)
	fmt.Println(x)	// 输出:5
}

func swap(x, y int) (int, int) {
	return y, x
}
4、函数使用

接下来,以一个简单示例来说明如何正确的使用函数。

max
package main

import "fmt"

func main() {
	fmt.Print(max(10, 7))
}

// 获取两数的最大值
func max(num1, num2 int) int {
	if num1 > num2 {
		return num1
	} else {
		return num2
	}
}