Go语言函数的返回值 | 青训营笔记

132 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天

一、本堂课重点内容

本堂课的知识要点有哪些?

  • Go语言函数的返回值

二、详细知识点介绍

本堂课介绍了哪些知识点?

Go语言函数的返回值

  1. 函数的返回值可以有0个到多个,形成返回值列表,但不允许有可变参数。
  2. 返回值列表必须用小括号括起来,不可以用省略方式表示可变返回值。
  3. 0个或者只有一个返回值的时候,小括号可以省略(非命名返回值)。而两个以上的返回值必须用小括号括起来。每个返回值必须明确指定数据类型,各个返回值之间用逗号隔开。
  4. 返回值可以仅仅给出数据类型,各个数据类型之间用逗号隔开。也可以采用命名返回值,命名的返回值也必须指定类型。多个命名的相同类型的返回值可以连续写,最后写一个数据类型标识符即可。
  5. 所有返回值要么全部命名,要么全部不命名,不可以部分命名,部分不命名。命名的返回值位置是任意的,如果不命名,则return的返回值类型必须与返回值列表中的类型匹配,而且数量、位置必须一致。
  6. 当只有一个返回值的时候可以不命名而只写类型,省略小括号;也可以命名,但是不能省略小括号。
  7. 函数作返回值用到了匿名函数的概念,以函数作为返回值的函数通常被称为工厂函数,顾名思义,就是生产函数的函数。返回的函数必须是匿名函数,或者称为闭包。
  8. 函数作为返回值的时候一定要注意函数签名,返回的闭包的签名一定要和函数的返回值函数的签名一致。如果返回的闭包的签名与返回值函数的签名不一致,会导致系统报错。
  9. 多返回值的函数不建议作为语句单独执行,因为其返回值将会被丢弃。最好作为表达式来为变量赋值。当多返回值函数作表达式赋值给变量的时候,一定要采用平行赋值的方式。赋值符左边的变量个数必须与返回值个数一致,且变量必须预先定义,否则必须采用短变量赋值操作符:=赋值。
  10. return语句为函数的最后一个语句,用来指明返回值,原则上要求所有函数都要保留,以明示函数结束。
  11. 如果函数不带返回值,则可以省略return语句;如果函数带有返回值,则必须以return语句结束函数,无论return语句后边是否带有表达式,都不可省略。return语句后面可以带返回值表达式,也可以为空。
  12. 如果函数的返回值为匿名函数,则return必须返回同类型匿名函数,不得为空。
  13. 如果函数的返回值列表里只有变量类型,没有命名变量,则return语句必须带返回值表达式,表达式的数量与返回值的类型数量一致,表达式计算结果的类型与返回值列表中的签名类型必须完全一致。
  14. 如果return语句后面带有多个表达式,每个表达式可以用小括号括起来,也可以没有,各表达式之间用逗号隔开。
  15. 如果返回值列表里所有变量都是命名的,那么return后面要么什么都不写,要么全写返回值变量,而且数目、顺序必须一致。

三、引用参考

我参考了哪些外部博客/笔记/文章?