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语言判断接口的具体类型并进行类型转换相关推荐

  1. 【Go语言】【14】GO语言的接口类型

    1.什么是接口? 在面向对象的语言中,接口是用来限制实现类行为的.怎么理解这句话呢? 定义一个Person接口,我只会站在我的角度上考虑问题,比如Person(人),自然想到会吃饭.睡觉等: inte ...

  2. 【14】GO语言的接口类型

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://qingkechina.blog.51cto.com/5552198/167511 ...

  3. # c语言判断字符类型

    c语言判断字符类型 字母,数字,空格,其他字符如何区别

  4. C++语言学习之判断出三角形的类型

    C++语言学习-----判断三角形类型 输入3个float类型的值为三角形的三个边的长,判断出三角形的类型:直角三角形.等边三角形,等腰三角形.钝角三角形 #include <iostream& ...

  5. C语言判断字符串类型及个数并输出

    C语言判断字符串类型及个数并输出,这里判断的是: 小写字母:大写字母:空格:数字: #include <stdio.h> int main() {char a;int letter = 0 ...

  6. Go 学习笔记(35)— Go 接口 interface (接口声明、接口初始化、接口方法调用、接口运算、类型断言、类型查询、空接口)

    1. 接口概念 接口是双方约定的一种合作协议.接口实现者不需要关心接口会被怎样使用,调用者也不需要关心接口的实现细节.接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式.类型及结构. 接口内部存 ...

  7. linux c 判断文件打开文件,Linux 用C语言判断文件和文件夹

    Linux 用C语言判断文件和文件夹 #include #include #include #include int access(const char *pathname, int mode); i ...

  8. Go 分布式学习利器(10)-- Go语言的接口

    文章目录 1. 接口与依赖 2. 自定义类型 1. 接口与依赖 在上一节中我们讨论Go语言的面向对象特性的时候也说了,Go语言并不支持继承,能够进行对象的封装(包括数据成员和成员函数的封装),那么这里 ...

  9. c语言顺序表有效元素长度,用C语言描述的顺序表类型

    2.2.1 顺序表 用C语言描述的顺序表类型如下所示: // 存储结构 const int MAXLISTSIZE=80; // 预设的存储空间最大容量 typedef struct { ElemTy ...

最新文章

  1. MySQL sql99语法介绍
  2. ckeditor3 配置
  3. Volley网络请求框架简析——Android网络请求框架(三)
  4. 《CSS权威指南》第3版
  5. VMware Cloud Director 10.3.1 - 云计算调配和管理平台
  6. 中国城市生活节奏排行榜
  7. 23位子网掩码是多少_无敌子网掩码(IP地址)计算方法(完全心算法)
  8. 微软,招 Java 了!
  9. input主动获取焦点
  10. 18岁创业从哪入手?读透这5点则事半功倍!
  11. 【赛码网 牛客网】输入输出总结(python版)
  12. 使用双重while循环求百钱百鸡问题
  13. Cmake语句find_package()函数
  14. 网上爬取股票数据实例
  15. YOLOv5改进系列(1)——添加SE注意力机制
  16. 【剖析】傅里叶变换、拉普拉斯变换、Z变换
  17. 神经网络画图PPT模板64页,ml-visuals免费下载
  18. 忍者必须死3 玩什么忍者_为什么你害怕忍者
  19. linux批量删除后门的代码,Linux_用批处理写的后门 永不被杀,代码思路是影子鹰DESERT朋友的 - phpStudy...
  20. Windows10家庭版如何获取administrators的权限

热门文章

  1. github用户followers分析
  2. 【博学谷学习记录】超强总结,用心分享 | 【Java】自定义异常
  3. 微信公众号抢票系统开发笔记
  4. 安装vue环境,并新建Vue项目
  5. Docker mongo:5.0
  6. pyqt5中sender方法介绍_PyQt5学习记录(二):Event sender
  7. ubuntu16.04 NVIDIA gtx1050 驱动安装
  8. 【小程序开发原创】小程序裁剪图片上传头像,二维码源码
  9. ubuntu8.04安装配置,现有问题集合,及解决方法
  10. 二元非洲秃鹫优化算法(Matlab代码实现)