专栏名称: xcbeyond
架构师
目录
相关文章推荐
阳泉日报  ·  2024年山西经济“成绩单”公布 ·  昨天  
山西广播电视台  ·  2024年山西体育十大新闻出炉 ·  昨天  
山西广播电视台  ·  2024年山西体育十大新闻出炉 ·  昨天  
山西省邮政管理局  ·  冻哭了!大风强劲气温骤降 全天“冰冻”模式…… ·  昨天  
HZ老乡俱乐部  ·  霍州:各村缴费通知! ·  昨天  
山西发布  ·  春节假日山西文旅市场迎来“开门红” ·  3 天前  
山西发布  ·  春节假日山西文旅市场迎来“开门红” ·  3 天前  
51好读  ›  专栏  ›  xcbeyond

4.1 Go语言从入门到精通:函数 | Go主题月

xcbeyond  · 掘金  ·  · 2021-04-26 17:40

正文

阅读 117

4.1 Go语言从入门到精通:函数 | Go主题月

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

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

1、函数定义

Go 语言中,函数定义是以关键字 func 开始,其标准格式如下:

func 函数名(参数列表) (返回参数列表) {
   函数体
}
复制代码

定义解析:

  • func :函数由关键字 func 开始,来表明这是一个函数。
  • 函数名:函数名称,需符合变量命名规范,函数名和参数列表一起构成了函数签名。 在同一个包内不能定义相同的函数名。 (记住:Go语言中,是不支持函数重载的!)
  • 参数列表:参数就是一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。
  • 返回类型:函数返回一列值的数据类型。有时是不需要返回值的,此时返回类型可以没有。
  • 函数体:函数定义的代码集合,用来实现具体的函数逻辑。

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

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

1.1 固定参数的函数定义

函数定义格式如下:

func 函数名(参数列表) (返回参数列表) {
   函数体
}
复制代码

例如,两数相乘:

func multipleForTowNum(num1 int, num2 int) int {
	result := num1 * num2
	return result
}
复制代码

1.2 可变参数的函数定义

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

func 函数名(v...T) (返回参数列表) {
   函数体
}
复制代码

注: v...T 表明 v 为一个切片, T 为切片中数据的类型。

例如,实现多数相乘:

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

其中, nums 为切片,用来存放不定长度的 int 类型数组。

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 开头的函数。另一方面,自定义函数是相对Go 语言内置函数而言,指内置函数以外的函数。







请到「今天看啥」查看全文