go学习 --- 类型断言

一、类型断言

类型断言,由于接口是一般类型,不知道具体类型,如果要转成具体类型,就需要使用类型断言

package main

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 //报错
	//使用类型断言解决
	b = a.(Point)
	fmt.Println(b)

}

二、断言检测

package main

import "fmt"

func main() {
   var t float32
   var x interface{}
   x  = t
   f,ok := x.(float32)
	if ok == true {
		fmt.Println("转换成功",f)
	}else {
		fmt.Println("转换失败")
	}
}

三、练习

package main

import "fmt"

type Person struct {

}
//item... 可变参数
func TypeJudge(item... interface{})  {
	for index, value := range item {
		switch value.(type) {
		case bool:
			fmt.Printf("第%v个参数是bool类型,值是%v\n",index,value)
		case string:
			fmt.Printf("第%v个参数是string类型,值是%v\n",index,value)
		case float32:
			fmt.Printf("第%v个参数是float32类型,值是%v\n",index,value)
		case float64:
			fmt.Printf("第%v个参数是float64类型,值是%v\n",index,value)
		case int:
			fmt.Printf("第%v个参数是int类型,值是%v\n",index,value)
		case int8:
			fmt.Printf("第%v个参数是int8类型,值是%v\n",index,value)
		case int16:
			fmt.Printf("第%v个参数是int16类型,值是%v\n",index,value)
		case int32:
			fmt.Printf("第%v个参数是int32类型,值是%v\n",index,value)
		case int64:
			fmt.Printf("第%v个参数是int64类型,值是%v\n",index,value)
		case uint:
			fmt.Printf("第%v个参数是uint类型,值是%v\n",index,value)
		case uint8:
			fmt.Printf("第%v个参数是uint8类型,值是%v\n",index,value)
		case uint16:
			fmt.Printf("第%v个参数是uint16类型,值是%v\n",index,value)
		case uint32:
			fmt.Printf("第%v个参数是uint32类型,值是%v\n",index,value)
		case uint64:
			fmt.Printf("第%v个参数是uint64类型,值是%v\n",index,value)
		case Person:
			fmt.Printf("第%v个参数是Person类型,值是%v\n",index,value)
		case *Person:
			fmt.Printf("第%v个参数是*Person类型,值是%v\n",index,value)
		default:
			fmt.Printf("没有找到相匹配的类型\n",value)
		}
	}
}
func main() {
   var n1 float32 = 22.2
	var n2  float64 = 500.3
	var n3 int = 100
	add := "成都"
	n4 := 22.2
	var p Person
	var per  = &Person{}
	TypeJudge(n1,n2,n3,n4,add,p,per)
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸭鸭老板

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值