5.3 多返回值
Go 函数可以返回多个值,最常见的模式是返回结果和错误信息。
基本用法
func findLinks(url string) ([]string, error) {
resp, err := http.Get(url)
if err != nil {
return nil, err
}
return visit(nil, doc), nil
}
links, err := findLinks(url) // 接收全部
links, _ := findLinks(url) // 忽略错误
多返回值传递
func findLinksLog(url string) ([]string, error) {
log.Printf("findLinks %s", url)
return findLinks(url) // 直接转发
}
命名返回值
func Size(rect image.Rectangle) (width, height int)
func Split(path string) (dir, file string)
裸返回(bare return)
所有返回值命名时,return 可省略操作数:
func CountWordsAndImages(url string) (words, images int, err error) {
resp, err := http.Get(url)
if err != nil {
return // 等价于 return 0, 0, err
}
words, images = countWordsAndImages(doc)
return // 等价于 return words, images, nil
}
裸返回能减少重复,但多处 return 时降低可读性,不宜过度使用。