码迷,mamicode.com
首页 > 其他好文 > 详细

类型断言的最佳实践

时间:2019-05-09 15:43:54      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:interface   highlight   打印   bool   技术   printf   利用   com   previous   

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 判断,报类型重复情况

类型断言的最佳实践

标签:interface   highlight   打印   bool   技术   printf   利用   com   previous   

原文地址:https://www.cnblogs.com/swei/p/10838464.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!