Go 具名返回值
2024-09-02 17:22:25
# Go
Go 语言可以对函数的返回值命名,返回值会被自动被初始化为零值而不需要你的处理,同时也可以使用“裸”返回语句。以下是 A Tour of Go 中的例子:
1 | package main |
什么时候使用
Effective Go 中主要说明了具名返回值可以提高函数的可读性。特别是在返回值类型相同的情况下,比如一个返回经纬度的函数:
1 | func location(name City) (lat, long float64) |
我们可以从返回值列表中知道经度和纬度分别对应第几个参数。
注意事项
A Tour of Go 中也提到,应该在短方法中使用“裸返回”,否则会降低代码的可读性。
具名返回值也会因为我们处理不当而造成错误。比如:
1 | func todoWithTimeout(c *context.Context) (err error) { |
在检查了上下文是否超时后,直接返回了,导致err
还是nil
,造成了错误。
正确做法应该是:
1 | func todoWithTimeout(c *context.Context) (err error) { |