Go语言判断接口的具体类型并进行类型转换
Go语言判断接口具体类型的方法
- 1. 方法1
- 2. 方法2
- 3. 方法3
- 4. 转成具体类型
1. 方法1
使用反射方法reflect.TypeOf(v interface{}).String()
得到以字符串表达的具体类型。
2. 方法2
使用fmt.Printf("%T", v)
打印出具体类型。或者使用fmt.Sprintf("%T", v)
返回一个字符串。
3. 方法3
自定义一个函数judgeType(v interface{}) string
来返回具体类型。
judgeType()函数如下。
func judgeType(v interface{}) string {switch i := v.(type) {case int:return "int"case int64:return "int 64"case int32:return "int32"case string:return "string"case float64:return "float64"default:_ = ireturn "unknown"}
}
4. 转成具体类型
先对其类型进行判断,再用类型断言进行转换。
//获取到具体的类型,可能是string类型或者float64
//其中dataQuery.Start 和 dataQuery.End 都是interface{}类型start := reflect.TypeOf(dataQuery.Start).String()end := reflect.TypeOf(dataQuery.End).String()var startTime float64var endTime float64if start == "string" {//使用类型断言转成具体类型startTimeStr:= dataQuery.End.(string)} else if start == "float64" {//使用类型断言转成具体类型startTime = dataQuery.Start.(float64)}if end == "string" {//使用类型断言转成具体类型endTimeStr:= dataQuery.End.(string)//调用相对转绝对的函数 parseRelativeTime(relative string) float64endTime = parseRelativeTime(endTimeStr)} else if end =="float64" {//使用类型断言转成具体类型endTime = dataQuery.Start.(float64)fmt.Printf("%d", endTime)}
Go语言判断接口的具体类型并进行类型转换相关推荐
- 【Go语言】【14】GO语言的接口类型
1.什么是接口? 在面向对象的语言中,接口是用来限制实现类行为的.怎么理解这句话呢? 定义一个Person接口,我只会站在我的角度上考虑问题,比如Person(人),自然想到会吃饭.睡觉等: inte ...
- 【14】GO语言的接口类型
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/167511 ...
- # c语言判断字符类型
c语言判断字符类型 字母,数字,空格,其他字符如何区别
- C++语言学习之判断出三角形的类型
C++语言学习-----判断三角形类型 输入3个float类型的值为三角形的三个边的长,判断出三角形的类型:直角三角形.等边三角形,等腰三角形.钝角三角形 #include <iostream& ...
- C语言判断字符串类型及个数并输出
C语言判断字符串类型及个数并输出,这里判断的是: 小写字母:大写字母:空格:数字: #include <stdio.h> int main() {char a;int letter = 0 ...
- Go 学习笔记(35)— Go 接口 interface (接口声明、接口初始化、接口方法调用、接口运算、类型断言、类型查询、空接口)
1. 接口概念 接口是双方约定的一种合作协议.接口实现者不需要关心接口会被怎样使用,调用者也不需要关心接口的实现细节.接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式.类型及结构. 接口内部存 ...
- linux c 判断文件打开文件,Linux 用C语言判断文件和文件夹
Linux 用C语言判断文件和文件夹 #include #include #include #include int access(const char *pathname, int mode); i ...
- Go 分布式学习利器(10)-- Go语言的接口
文章目录 1. 接口与依赖 2. 自定义类型 1. 接口与依赖 在上一节中我们讨论Go语言的面向对象特性的时候也说了,Go语言并不支持继承,能够进行对象的封装(包括数据成员和成员函数的封装),那么这里 ...
- c语言顺序表有效元素长度,用C语言描述的顺序表类型
2.2.1 顺序表 用C语言描述的顺序表类型如下所示: // 存储结构 const int MAXLISTSIZE=80; // 预设的存储空间最大容量 typedef struct { ElemTy ...
最新文章
- MySQL sql99语法介绍
- ckeditor3 配置
- Volley网络请求框架简析——Android网络请求框架(三)
- 《CSS权威指南》第3版
- VMware Cloud Director 10.3.1 - 云计算调配和管理平台
- 中国城市生活节奏排行榜
- 23位子网掩码是多少_无敌子网掩码(IP地址)计算方法(完全心算法)
- 微软,招 Java 了!
- input主动获取焦点
- 18岁创业从哪入手?读透这5点则事半功倍!
- 【赛码网 牛客网】输入输出总结(python版)
- 使用双重while循环求百钱百鸡问题
- Cmake语句find_package()函数
- 网上爬取股票数据实例
- YOLOv5改进系列(1)——添加SE注意力机制
- 【剖析】傅里叶变换、拉普拉斯变换、Z变换
- 神经网络画图PPT模板64页,ml-visuals免费下载
- 忍者必须死3 玩什么忍者_为什么你害怕忍者
- linux批量删除后门的代码,Linux_用批处理写的后门 永不被杀,代码思路是影子鹰DESERT朋友的 - phpStudy...
- Windows10家庭版如何获取administrators的权限
热门文章
- github用户followers分析
- 【博学谷学习记录】超强总结,用心分享 | 【Java】自定义异常
- 微信公众号抢票系统开发笔记
- 安装vue环境,并新建Vue项目
- Docker mongo:5.0
- pyqt5中sender方法介绍_PyQt5学习记录(二):Event sender
- ubuntu16.04 NVIDIA gtx1050 驱动安装
- 【小程序开发原创】小程序裁剪图片上传头像,二维码源码
- ubuntu8.04安装配置,现有问题集合,及解决方法
- 二元非洲秃鹫优化算法(Matlab代码实现)