golang学习笔记:Interface类型断言详情
时间:2019-09-20
本文章向大家介绍golang学习笔记:Interface类型断言详情,主要包括golang学习笔记:Interface类型断言详情使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原文链接:https://www.2cto.com/kf/201712/703563.html
1. 用于判断变量类型
demo如下:
switch t := var.(type){ case string: //add your operations case int8: //add your operations case int16: //add your operations default: return errors.New("no this type") } } //空接口包含所有的类型,输入的参数均会被转换为空接口 //变量类型会被保存在t中
2. 判断某个接口类型是否实现了特定接口
为实现这一目标,代码如下:
if t, ok := something.(I) ; ok { // 对于某些实现了接口I的 // t是其所拥有的类型 }
如果已经确定了something实现了接口I,可以直接写出下面的代码:
//在确定了something实现了接口I的情况下 //t时something所拥有的类型 //这说明ok t := something.(I)
当然,也可以封装在一个函数中:
func IsImplement(interface {}) bool{ _, ok := something.(I); return ok }
注意
something必须为接口(Interface)类型,才可以使用类型断言。假如是其他类型,使用类型断言时,需要转换,最好的方法是定义函数,封装类型断言方法。
分别运行以下代码,看看未实现特定接口的类型使用断言会发生什么:
demo1.go
type I interface{ Get() int Put(int) } //定义结构体,实现接口I type S struct { i int } func (p *S) Get() int { return p.i } func (p *S) Put(v int ) { p.i = v } //使用类型断言 func GetInt( some interface {}) int { return some.(I).Get() } func main(){ var some = &S{i:5} fmt.Println(GetInt(some)) }
demo2.go
type I interface{ Get() int Put(int) } //定义结构体,实现接口I type S struct { i int } func (p *S) Get() int { return p.i } func (p *S) Put(v int ) { p.i = v } //使用类型断言 func GetInt( some interface {}) int { return some.(I).Get() } func main(){ var i int = 5 fmt.Println(GetInt(i)) }
原文地址:https://www.cnblogs.com/wangjq19920210/p/11557049.html
- MVC结构简介
- 优酷、爱奇艺、摩拜……多家网络平台被曝注册容易注销难!面临个人隐私泄露风险
- WordPress中借助.htaccess屏蔽某个IP或某个IP段(防垃圾评论)
- ASP.NET 调味品:AJAX
- CTreeCtrl 控件使用总结
- 高盛成立交易部门,涉足比特币和加密货币交易
- WordPress主题开发:添加主题更新提醒功能
- WordPress主题开发:添加主题更新提醒功能
- ASP.NET2.0应用中定制安全凭证之实践篇
- Kaggle大神带你上榜单Top2%:点击预测大赛纪实(下)
- WordPress主题后台选项开发框架 Options Framework 介绍
- vc++ 在程序中运行另一个程序的方法
- 为Options Framework主题后台框架添加后台侧边栏
- ClistCtrl用法及总结(由怎样隐藏ListCtrl列表头的排序小三角形这个bug学习到的知识)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法