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}

 

posted @ 2019-01-21 16:47  louis-sun  阅读(277)  评论(0)    收藏  举报