给定swap
,一个返回多个值的函数,假设它是某些API的一部分,我无法修改:
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("hello", "world")
fmt.Println(a, b)
}
是否可以使用swap
函数并仅获取第一个返回值,丢弃第二个值?我试过这个:
func main() {
a, b := swap("hello", "world")
fmt.Println(a)
}
ERROR: prog.go:10: b declared and not used [process exited with non-zero status]
这也是不可能的:
a := swap("hello", "world")
ERROR: prog.go:10: multiple-value swap() in single-value context
当我不需要所有返回的部分时,如何处理返回多个值的函数?
代码基于" A tour of go - lesson 9"
答案 0 :(得分:9)
使用空白标识_
:
a, _ := swap("hello", "world")
分配给空白标识符的所有内容都会被静默丢弃而不会引发警告。您还可以使用空白标识符向结构添加填充:
struct {
a byte
b byte
c byte
_ byte // padding
}
空白标识符的另一种用法是在初始化全局变量时丢弃返回值:
var foo, _ = foo.NewFoo() // ignore error returned by NewFoo()
当只需要一个范围的值时:
for _, v := range mySlice { }