Golang语言中的类型断言的最佳实践

  • 利用函数typejudge 来判断传入的实参是什么类型,并打印出它的类型及数值
package main
import(
    "fmt"
    _"sort"
    _"math/rand"
)
type Wisdom struct{
	name string
}

func TypeJuDge (Items... interface{}) {
	for index, value := range Items {
		switch value.(type){
			case bool:
				fmt.Printf("第%v个参数是布尔类型,它的值是%v \n",index+1,value)
			case string:
				fmt.Printf("第%v个参数是字符串类型,它的值是%v \n",index+1,value)
			case int,int32,int64:
				fmt.Printf("第%v个参数是整数类型,它的值是%v \n",index+1,value)
			case float32,float64:
				fmt.Printf("第%v个参数是浮点类型,它的值是%v \n",index+1,value)
			// case bool:
			// 	fmt.Printf("第%v个参数是bool类型,它的值是%v \n",index+1,value)
			case Wisdom:
				fmt.Printf("第%v个参数是自定义Wisdom类型,它的值是%v \n",index+1,value)
			case *Wisdom:
				fmt.Printf("第%v个参数是自定义Wisdom指针类型,它的值是%v \n",index+1,value)
			}
	}
}

func main(){
	wisdom := Wisdom{ "智慧"}
	wisdom2 := &Wisdom{ "人名"}
	var n1 float64 = 68.9
	var n2 bool 
	var n3 int = 100
	var name string = "GOLANG"
	TypeJuDge(wisdom,wisdom2,n1,n2,n3,name) 

}
  •  终端显示结果:

 类型断言的最佳实践 随笔

GOLANG语言的运行报错

  • duplicate case bool in type switch previous case at .\main.go:14:4
  • 原因是因为我多写了一个case bool 判断,报类型重复情况
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。