首页 > 其他 > 详细

golang类型断言

时间:2021-06-02 09:47:26      阅读:17      评论:0      收藏:0      [点我收藏+]

一、第一种

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

golang类型断言

原文:https://www.cnblogs.com/adong2021/p/14839125.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!