返回值
约 311 字大约 1 分钟
2025-07-08
函数返回多个值
Go 函数可以返回多个值,例如:
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("Google", "sreio")
fmt.Println(a, b)
}
// Google sreio
Golang返回值不能用容器对象接收多返回值。只能用多个变量,或 _
忽略。
package main
func test() (int, int) {
return 1, 2
}
func main() {
// s := make([]int, 2)
// s = test() // Error: multiple-value test() in single-value context
x, _ := test()
println(x)
// 1 2
}
命名返回参数可看做与形参类似的局部变量,最后由 return 隐式返回
package main
func add(x, y int) (z int) {
z = x + y
return
}
func main() {
println(add(1, 2))
}
// 3
命名返回参数可被同名局部变量遮蔽,此时需要显式返回。
func add(x, y int) (z int) {
{ // 不能在一个级别,引发 "z redeclared in this block" 错误。
var z = x + y
// return // Error: z is shadowed during return
return z // 必须显式返回。
}
}
命名返回参数允许 defer 延迟调用通过闭包读取和修改。
package main
func add(x, y int) (z int) {
defer func() {
z += 100
}()
z = x + y // 执行完这行之后 才会去执行defer闭包函数
return
}
func main() {
println(add(1, 2))
}
贡献者
更新日志
2025/7/8 02:28
查看所有更新日志
d57fb
-go于