6.3 函数返回值

本篇学习 Go 函数返回值的常见写法,并能正确处理单返回值、多返回值与错误返回。

字数 454 字

函数返回值

概念说明

函数返回值用于把处理结果从函数内部传回调用方。
Go 常见写法有:无返回值、单返回值、多返回值、命名返回值。

语法/规则

  1. 无返回值函数可省略返回类型。
  2. 单返回值写在参数列表后,例如 func f() int
  3. 多返回值写在括号里,例如 func f() (int, error)
  4. 命名返回值可以在函数签名中先声明,return 时可省略具体变量。
  5. 返回 error 时,调用方应先判断错误再使用结果。

不同返回值写法示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package main

import (
	"errors"
	"fmt"
)

func fun1() {
	fmt.Println("fun1 无返回值")
}

func fun2() int {
	return 5
}

func fun3(a, b int) (int, error) {
	if b == 0 {
		return 0, errors.New("除数不能为 0")
	}
	return a / b, nil
}

func fun4() (res string) {
	res = "命名返回值"
	return
}

func main() {
	fun1()
	fmt.Println(fun2())

	value, err := fun3(10, 0)
	fmt.Println(value, err)

	fmt.Println(fun4())
}

输出结果:

1
2
3
4
fun1 无返回值
5
0 除数不能为 0
命名返回值

常见错误

  1. 函数声明了返回值类型却没有 return,导致编译报错。
  2. 调用多返回值函数时只接收一部分值,写法不合法。
  3. 接收到 error 后不判断就继续使用结果,容易引发逻辑错误。
  4. 命名返回值和局部变量重名,导致结果混淆。
使用 Hugo 构建
主题 StackJimmy 设计 由 Hobin 魔改
载入天数...载入时分秒...
发表了 0 篇文章 · 发表了 46 篇笔记 · 总计 2 万 5 千字(其中笔记 25104 字)