给定 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”
最佳答案
使用空白标识符_
:
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 { }
关于go - 从具有多个返回值的函数调用中仅获取特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23735432/