golang类型断言

一、第一种

package main

import (
	"fmt"
)

func main() {

	var a float32 = 3.14
	var x interface{}
	x = a
	b, ok := x.(float32)
	if ok {
		fmt.Printf("类型断言成功,b类型为%T\n", b)
	} else {
		fmt.Println("类型断言不成功")
	}

}

输出结果:

类型断言成功,b类型为float32

二、第二种

写一个方法循环判断传入参数的类型

package main

import (
	"fmt"
)

func TypeJudge(items ...interface{}) {
	for i, item := range items {
		switch x := item.(type) {
		case bool:
			fmt.Printf("第%d个参数是bool类型,值是%v\n", i+1, x)
		case float32, float64:
			fmt.Printf("第%d个参数是float类型,值是%v\n", i+1, x)
		case int, int8, int16, int32, int64:
			fmt.Printf("第%d个参数是int类型,值是%v\n", i+1, x)
		case nil:
			fmt.Printf("第%d个参数是nil,值是%v\n", i+1, x)
		case string:
			fmt.Printf("第%d个参数是string类型,值是%v\n", i+1, x)
		default:
			fmt.Printf("第%d个参数是unknow,值是%v\n", i+1, x)
		}
	}

}

func main() {

	var a float32 = 10.25
	var b float64 = 50.41
	var flag bool = true
	var name string = "小明"
	var c int = 20
	var d int8 = 21
	TypeJudge(nil, a, b, flag, name, c, d)
}

输出结果:

第1个参数是nil,值是<nil>
第2个参数是float类型,值是10.25
第3个参数是float类型,值是50.41
第4个参数是bool类型,值是true
第5个参数是string类型,值是小明
第6个参数是int类型,值是20
第7个参数是int类型,值是21
posted @ 2021-06-01 23:12  若雨蚂蚱  阅读(162)  评论(0编辑  收藏  举报