- package mian
- import "fmt"
- type Point struct {
- x int
- y int
- }
- func main() {
- var a interface{}
- var point Point = Point{1, 2}
- a = point
- var b Point
- b = a
- fmt.Println(b)
- }
以上体现的问题: 如何将一个接口变量赋值自定义类型的变量. 这里直接赋值时报错的.
解决方法:
- package mian
- import "fmt"
- type Point struct {
- x int
- y int
- }
- func main() {
- var a interface{}
- var point Point = Point{1, 2}
- a = point
- var b Point
- b = a.(Point) // 类型断言
- fmt.Println(b)
- }
基本介绍
类型断言, 由于接口是一般类型, 不知道具体类型, 如果要转成具体类型, 就需要使用类型断言.
- package mian
- import "fmt"
- type Point struct {
- x int
- y int
- }
- func main() {
- // 类型断言 (带检测)
- var x interface{}
- var b2 float32 = 1.1
- x = b2
- y,ok := x.(float64)
- if ok == true {
- fmt.Println("convert success")
- fmt.Printf("y 的类型是 %T 值是 =%v",y,y)
- }else{
- fmt.Println("convert fail")
- }
- }
来源: http://www.bubuko.com/infodetail-3787493.html