[GO]断言
使用if实现断言
package main import "fmt" type Student struct {
name string
id int
} func main() {
i := make([]interface{}, )
i[] =
i[] = "hello world"
i[] = Student{"miki", }
//类型查询,查询断言
//第一个返回下标,第二个返回下标对应的值,data分别是i[0],i[1],i[2],
for index, data := range i{
//第一个返回的是值 ,第二个返回的是判断结果的真假
if value, ok := data.(int); ok == true {
fmt.Printf("x[%d]类型为int, 内容为%d\n", index, value)
}else if value, ok := data.(string); ok == true {
fmt.Printf("x[%d]类型为string, 内容为%d\n", index, value)
}else if value, ok := data.(Student); ok == true {
fmt.Printf("x[%d]Student, 内容为name=%s, id=%d\n", index, value.name, value.id)
}
}
}
执行的结果为
x[]类型为int, 内容为1
x[]类型为string, 内容为%!d(string=hello world)
x[]Student, 内容为name=miki, id=
如果是使用switch的方式进行断言的话就会像这样
package main import "fmt" type Student struct {
name string
id int
} func main() {
i := make([]interface{}, )
i[] =
i[] = "hello world"
i[] = Student{"miki", }
//类型查询,查询断言
//第一个返回下标,第二个返回下标对应的值,data分别是i[0],i[1],i[2],
for index, data := range i{
//第一个返回的是值 ,第二个返回的是判断结果的真假
switch value := data.(type) { //这里是data.(type)的方式
case int:
fmt.Printf("x[%d]类型为int, 内容为%d\n", index, value)
case string:
fmt.Printf("x[%d]类型为string, 内容为%d\n", index, value)
case Student:
fmt.Printf("x[%d]Student, 内容为name=%s, id=%d\n", index, value.name, value.id)
}
}
}
执行结果
x[]类型为int, 内容为1
x[]类型为string, 内容为%!d(string=hello world)
x[]Student, 内容为name=miki, id=
[GO]断言的更多相关文章
- iOS-----程序异常处理----- 断言NSAssert()和NSParameterAssert区别和用处
NSAssert和assert是断言,主要的差别是assert在断言失败的时候只是简单的终止程序,而NSAssert会报告出错误信息并且打印出来.所以尽管的使用NSAssert,可以不去使用asser ...
- GO语言总结(5)——类型转换和类型断言
上一篇博客介绍了Go语言的数组和切片——GO语言总结(4)——映射(Map),本篇博客介绍Go语言的类型转换和类型断言 由于Go语言不允许隐式类型转换.而类型转换和类型断言的本质,就是把一个类型转换到 ...
- postman 断言解析
最近在学习postman官方文档, 顺势翻译出来,以供学习! postman断言是JavaScript语言编写的,在postman客户端指定区域编写即可. 断言会在请求返回之后,运行,并根据断言的pa ...
- 测试框架Mocha与断言expect
测试框架Mocha与断言expect在浏览器和Node环境都可以使用除了Mocha以外,类似的测试框架还有Jasmine.Karma.Tape等,也很值得学习. 整个项目源代码: 为什么学习测试代码? ...
- JavaScrict中的断言调试
今天在看忍者秘籍的时候,看到一个断言方法.查阅了一下资料,原来javascript中的console也包含这个方法.具体用法如下: <script type="text/javascr ...
- 断言与异常(Assertion Vs Exception)
在日常编程实践中,断言与异常的界限不是很明显,这也使得它们常常没有被正确的使用.我也在不断的与这个模糊的怪兽搏斗,仅写此文和大家分享一下我的个人看法.我想我们还可以从很多角度来区别断言和异常的使用场景 ...
- 断言(Assert)与异常(Exception)
断言是被用来检查非法情况而不是错误情况,即在该程序正常工作时绝不应该发生的非法情况,用来帮助开发人员对问题的快速定位.异常处理用于对程序发生异常情况的处理,增强程序的健壮性.容错性,减少程序使用中对用 ...
- Linux Kernel 代码艺术——编译时断言
本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码片段(不关注OS的各个模块的设计思想,此部分我准备写在“深入理解Linux Kernel” 系列文章中),一来通过内核 ...
- selenium自动化-java-封断言类2
封装断言类 package streamax.com; import java.util.ArrayList; import java.util.List; import org.testng.Ass ...
- selenium自动化-java-封装断言
封装的断言. 1 package com.baidu.www; import org.testng.Assert; /* * 封装断言 */ public class assertion { stat ...
随机推荐
- ThreadPoolExecutor之三:自定义线程池-扩展示例
ThreadPoolExecutor是可扩展的,下面一个示例: package com.dxz.threadpool.demo1; import java.util.concurrent.Blocki ...
- HBase之五:hbase的region分区
一.Region 概念 Region是表获取和分布的基本元素,由每个列族的一个Store组成.对象层级图如下: Table (HBase table) Region (Regions for the ...
- Web应用层协议---HTTP
处于协议栈顶层的应用层协议定义了运行在不同端系统的应用程序进程如何相互传递报文.定义内容如下: 1.交换的报文类型.请求报文和响应报文. 2.各种报文类型的语法,如报文中的各个字段及这这些字段是如何描 ...
- Java垃圾回收机制和内存分配
收集算法是内存回收的方法论,垃圾收集器是内存回收的具体实现 自动内存管理解决的是:给对象分配内存 以及 回收分配给对象的内存 为什么我们要了解学习 GC 与内存分配呢? 在 JVM 自动内存管理机制的 ...
- CentOS 7 需要安装的常用工具,及centos安装fcitx 搜狗输入法的坑旅
https://blog.csdn.net/tham_/article/details/41868831 Centos常用设置 1.当最大化时隐藏标题栏 或者使用tweak tool 在字体中将标题栏 ...
- ConcurrentHashMap放入null值报错
//ConcurrentHashMap源码: /** Implementation for put and putIfAbsent */ final V putVal(K key, V value, ...
- 关于@Autowired使用注意点
@Autowired是按类型进行装配的,那么我一个接口UserInterface,有多个实现类AImpl(@service(name="userInterface1")),BImp ...
- 18_java之集合Collection
01集合使用的回顾 *A:集合使用的回顾 *a.ArrayList集合存储5个int类型元素 public static void main(String[] args) { ArrayList< ...
- sublime中开启表格插入
1. 导入包 tableedit 2. ctrl+shift +p 输入teecv,然后开启后面连个东西: 3 按tab可以插入表格
- Foglight 5.6.7 控制台jboss报404
Foglight 5.6.7 控制台jboss报404 [终极问题原来就一数据库权限问题!下文是由问题源找到的类似的dell support的相关文章,但却是关于sql server error的,感 ...