开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:类型断言的最佳实践(1)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9708
类型断言最佳实践(2)
内容介绍:
一、类型断言的最佳实践2
二、类型断言的最佳实践3
一、类型断言的最佳实践2
1. 编写函数,循环判断传入参数的类型。
//编写一个函数,可以判断输入的函数是什么类型
func TypeJudge(items...interface()){ //“items ... interface{}”此参数称为可变参数,“...”可表示 TypeJudge 可以接收任意多个实参,“interface{}”表示可以接收任意类型的实参。
for i,x:=range items{
switch x.(type){
//使用 switch 语句进行语句断言,此处 type 是一个关键字,固定写法,作用为判断 x 的函数类型。
case boo1:
fmt.Printf("第%v个参数是 float32 类型 值是%v\n",i,x)
case float32:
fmt.Printf("第%v个参数是 float32 类型 值是%v\n",i,x)
case float64:
fmt.Printf("第%v个参数是 float64 类型 值是%v\n",i,x)
case int,int32,int34:
fmt.Printf("第%v个参数是 整数 类型 值是%v\n",i,x)
case string:
fmt.Printf("第%v个参数是 string 类型 值是%v\n",i,x)
default:
fmt.Printf("第%v个参数是 类型 不确定, 值是%v\n",i,x)
}
}
}
func main(){
var n1 float32=1.1
var n2 float64=2.3
var n3 int32=30
var name string="tom"
address:="北京"
n4:=300
TypeJudge(n1,n2,n3,name,address,n4)
}
运行结果:
第0个参数是 float32类型 值是1.1
第1个参数是 float64类型 值是2.3
第2个参数是 整数 类型 值是30
第3个参数是 string 类型 值是 tom
第4个参数是 string 类型 值是北京
第5个参数是 整数 类型 值是300
二、类型断言的最佳实践3
1. 在之前代码基础上,增加判断 Student 类型和*Student 类型,学员自己完成。
//定义 Student 类型
type Student struct{
}
//编写一个函数,可以判断输入的函数是什么类型
func TypeJudge(items...interface()){
for i,x:=range items{
switch x.(type){
case boo1:
fmt.Printf("第%v 个参数是 float32 类型 值是%v\n",i,x)
case float32:
fmt.Printf("第%v 个参数是 float32 类型 值是%v\n",i,x)
case float64:
fmt.Printf("第%v 个参数是 float64 类型 值是%v\n",i,x)
case int,int32,int64:
fmt.Printf("第%v 个参数是 整数 类型 值是%v\n",i,x)
case string:
fmt.Printf("第%v 个参数是 string 类型 值是%v\n",i,x)
case Student:
fmt.Printf("第%v 个参数是 Student 类型 值是%v\n",i,x)
case *Student:
fmt.Printf("第%v 个参数是 *Student 类型 值是%v\n",i,x)
default:
fmt.Printf("第%v 个参数是 类型 不确定, 值是%v\n",i,x)
}
}
}
func main(){
var n1 float32=1.1
var n2 float64=2.3
var n3 int32=30
var name string="tom"
address:="北京"
n4:=300
stu1:=Student{}
stu2:=Student*{}
TypeJudge(n1,n2,n3,name,address,n4,stu1,stu2)
}
运行结果:
第0个参数是 float32类型 值是1.1
第1个参数是 float64类型 值是2.3
第2个参数是 整数 类型 值是30
第3个参数是 string 类型 值是 tom
第4个参数是 string 类型 值是北京
第5个参数是 整数 类型 值是300
第6个参数是 Student 类型 值是<>
第7个参数是 *Student 类型&<>