Go之类型断言
一:由于接口是基本类型,不知道具体类型,如果要转成具体类型需要使用类型断言
package main
import (
"fmt"
)
type Dy struct{
x int
y int
}
func main() {
var i1 interface{}
var dy Dy = Dy{1,2}
i1 = dy
var i2 Dy
//Dy(i1)会报错
//类型断言才能把接口转为具体类型
i2 = i1.(Dy)
fmt.Println(i2)
}
结果
[ `go run duanyan.go` | done ]
{1 2}
二:断言的使用细节
①:断言会放回两个数据,如果只赋值给一个参数,默认返回断言后的结果,如果赋值给两个,第二个为bool值
package main
import (
"fmt"
)
type Dy struct{
x int
y int
}
func main() {
var i1 interface{}
var dy Dy = Dy{1,2}
i1 = dy
i2, ok := i1.(Dy)
fmt.Println(ok)
fmt.Println(i2)
}
结果
[ `go run duanyan.go` | done ]
true
{1 2}

浙公网安备 33010602011771号