在 Go 中对多个返回值进行转换/类型断言的惯用方法
技术问答
296 人阅读
|
0 人回复
|
2023-09-12
|
在 Go 转换多个返回值的常用方法是什么?
% ^& H; U" H( n! A可以在一行中完成,还是需要使用临时变量,比如我在下面的例子中做的?
. Y% W! E- v! `3 Ppackage mainimport "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: " str / 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") } }8 l$ v6 r( e: X5 Q
顺便问一下,casting说到接口,是不是调用了?
9 D! n& Q" W/ `2 T7 [i := interface.(int)1 o0 {- `1 Z- k
6 u9 E' _' R! A 解决方案: 4 z. f) [* G0 }& C1 @
你不能一行完成。你的临时变量方法是走路。5 y t* L# H3 y$ N& Q" G9 B# }
对了,当涉及到界面时,是否称为强制转换?8 M: c; h9 \( s v- L
它实际上被称为类型断言。A型铸造不同的转换是:0 w+ |6 _9 o8 C2 k/ {" C+ e
var a intvar b int64a = 5b = int64(a)1 X" I& }3 y' G9 p4 w
|
|
|
|
|
|