给定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)
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用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]
Run Code Online (Sandbox Code Playgroud)
这也是不可能的:
a := swap("hello", "world")
ERROR: prog.go:10: multiple-value swap() in single-value context
Run Code Online (Sandbox Code Playgroud)
当我不需要所有返回的部分时,如何处理返回多个值的函数?
代码基于" 参观之旅 - 第9课 "
使用空白标识符_:
a, _ := swap("hello", "world")
Run Code Online (Sandbox Code Playgroud)
分配给空白标识符的所有内容都会被静默丢弃而不会引发警告.您还可以使用空白标识符向结构添加填充:
struct {
a byte
b byte
c byte
_ byte // padding
}
Run Code Online (Sandbox Code Playgroud)
空白标识符的另一种用法是在初始化全局变量时丢弃返回值:
var foo, _ = foo.NewFoo() // ignore error returned by NewFoo()
Run Code Online (Sandbox Code Playgroud)
当只需要一个范围的值时:
for _, v := range mySlice { }
Run Code Online (Sandbox Code Playgroud)