这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
一、本堂课重点内容
本堂课的知识要点有哪些?
- Go语言函数的返回值
二、详细知识点介绍
本堂课介绍了哪些知识点?
Go语言函数的返回值
- 函数的返回值可以有0个到多个,形成返回值列表,但不允许有可变参数。
- 返回值列表必须用小括号括起来,不可以用省略方式表示可变返回值。
- 0个或者只有一个返回值的时候,小括号可以省略(非命名返回值)。而两个以上的返回值必须用小括号括起来。每个返回值必须明确指定数据类型,各个返回值之间用逗号隔开。
- 返回值可以仅仅给出数据类型,各个数据类型之间用逗号隔开。也可以采用命名返回值,命名的返回值也必须指定类型。多个命名的相同类型的返回值可以连续写,最后写一个数据类型标识符即可。
- 所有返回值要么全部命名,要么全部不命名,不可以部分命名,部分不命名。命名的返回值位置是任意的,如果不命名,则
return的返回值类型必须与返回值列表中的类型匹配,而且数量、位置必须一致。 - 当只有一个返回值的时候可以不命名而只写类型,省略小括号;也可以命名,但是不能省略小括号。
- 函数作返回值用到了匿名函数的概念,以函数作为返回值的函数通常被称为工厂函数,顾名思义,就是生产函数的函数。返回的函数必须是匿名函数,或者称为闭包。
- 函数作为返回值的时候一定要注意函数签名,返回的闭包的签名一定要和函数的返回值函数的签名一致。如果返回的闭包的签名与返回值函数的签名不一致,会导致系统报错。
- 多返回值的函数不建议作为语句单独执行,因为其返回值将会被丢弃。最好作为表达式来为变量赋值。当多返回值函数作表达式赋值给变量的时候,一定要采用平行赋值的方式。赋值符左边的变量个数必须与返回值个数一致,且变量必须预先定义,否则必须采用短变量赋值操作符
:=赋值。 return语句为函数的最后一个语句,用来指明返回值,原则上要求所有函数都要保留,以明示函数结束。- 如果函数不带返回值,则可以省略
return语句;如果函数带有返回值,则必须以return语句结束函数,无论return语句后边是否带有表达式,都不可省略。return语句后面可以带返回值表达式,也可以为空。 - 如果函数的返回值为匿名函数,则
return必须返回同类型匿名函数,不得为空。 - 如果函数的返回值列表里只有变量类型,没有命名变量,则
return语句必须带返回值表达式,表达式的数量与返回值的类型数量一致,表达式计算结果的类型与返回值列表中的签名类型必须完全一致。 - 如果
return语句后面带有多个表达式,每个表达式可以用小括号括起来,也可以没有,各表达式之间用逗号隔开。 - 如果返回值列表里所有变量都是命名的,那么
return后面要么什么都不写,要么全写返回值变量,而且数目、顺序必须一致。