在 Go 中转换多个返回值的惯用方法是什么?
您可以在一行中完成它,还是需要使用临时变量,就像我在下面的示例中所做的那样?
package main
import "fmt"
func oneRet() interface{} {
return "Hello"
}
func twoRet() (interface{}, error) {
return "Hejsan", nil
}
func main() {
// With one return value, you can simply do this
str1 := oneRet().(string)
fmt.Println("String 1: " + str1)
// It is not as easy with two return values
//str2, err := twoRet().(string) // Not possible
// Do I really have to use a temp variable instead?
temp, err := twoRet()
str2 := temp.(string)
fmt.Println("String 2: " + str2 )
if err != nil {
panic("unreachable")
}
}
顺便问一下,它叫casting
当谈到接口时?
i := interface.(int)
你不能用一行来完成它。
您的临时变量方法是正确的选择。
顺便问一下,接口的时候就叫casting吗?
它实际上被称为类型断言 http://golang.org/ref/spec#Type_assertions。
类型 cast 转换是不同的:
var a int
var b int64
a = 5
b = int64(a)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)