大家好,我是刚吃完第三杯咖啡还在摸鱼的Go语言爱好者。今天我们要聊一个看似简单,实则有点意思的话题——Go函数的返回值。
如果你刚开始学Go,可能会想:“返回值?不就是函数最后那个东西嘛,有什么好讲的?” 别急,等我讲完,你可能会发现自己之前写的Go函数有点“亏”了。
一、基础篇:普通的返回值
先来看最基础的返回值用法:
package main
import "fmt"
// 最基本的单返回值
func add(a, b int) int {
return a + b
}
// 多返回值
func swap(a, b string) (string, string) {
return b, a
}
func main() {
sum := add(3, 5)
fmt.Println("3+5=", sum)
x, y := swap("hello", "world")
fmt.Println(x, y) // 输出:world hello
}
看到没?Go函数可以返回多个值,这是很多语言羡慕不来的特性。想象一下,在其他语言里你要交换两个变量值,要么得用指针,要么得封装成结构体,在Go里直接一个函数搞定!
但这里有个坑等着新手跳:
// 错误示范!
result := swap("hello", "world")
fmt.Println(result)
这么写会报错!为什么?因为swap返回两个值,你只用一个变量接,Go编译器会生气:“我给你两个值,你只准备一个位置,这不合适吧?”
正确的做法是要么用两个变量接,要么用下划线忽略其中一个:
// 正确做法1:全都要
x, y := swap("hello", "world")
// 正确做法2:只娶一个,其他不要
result1, _ := swap("hello", "world")
二、进阶篇:命名返回值
这是Go语言的一个特色功能,先看代码:
// 命名返回值
func splitNumber(num int) (half, double int) {
half = num / 2
double = num * 2
return // 注意这里,直接return就行
}
func main() {
h, d := splitNumber(10)
fmt.Printf("一半是%d, 两倍是%d\n", h, d) // 输出:一半是5, 两倍是20
}

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



