使用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]断言的更多相关文章

  1. iOS-----程序异常处理----- 断言NSAssert()和NSParameterAssert区别和用处

    NSAssert和assert是断言,主要的差别是assert在断言失败的时候只是简单的终止程序,而NSAssert会报告出错误信息并且打印出来.所以尽管的使用NSAssert,可以不去使用asser ...

  2. GO语言总结(5)——类型转换和类型断言

    上一篇博客介绍了Go语言的数组和切片——GO语言总结(4)——映射(Map),本篇博客介绍Go语言的类型转换和类型断言 由于Go语言不允许隐式类型转换.而类型转换和类型断言的本质,就是把一个类型转换到 ...

  3. postman 断言解析

    最近在学习postman官方文档, 顺势翻译出来,以供学习! postman断言是JavaScript语言编写的,在postman客户端指定区域编写即可. 断言会在请求返回之后,运行,并根据断言的pa ...

  4. 测试框架Mocha与断言expect

    测试框架Mocha与断言expect在浏览器和Node环境都可以使用除了Mocha以外,类似的测试框架还有Jasmine.Karma.Tape等,也很值得学习. 整个项目源代码: 为什么学习测试代码? ...

  5. JavaScrict中的断言调试

    今天在看忍者秘籍的时候,看到一个断言方法.查阅了一下资料,原来javascript中的console也包含这个方法.具体用法如下: <script type="text/javascr ...

  6. 断言与异常(Assertion Vs Exception)

    在日常编程实践中,断言与异常的界限不是很明显,这也使得它们常常没有被正确的使用.我也在不断的与这个模糊的怪兽搏斗,仅写此文和大家分享一下我的个人看法.我想我们还可以从很多角度来区别断言和异常的使用场景 ...

  7. 断言(Assert)与异常(Exception)

    断言是被用来检查非法情况而不是错误情况,即在该程序正常工作时绝不应该发生的非法情况,用来帮助开发人员对问题的快速定位.异常处理用于对程序发生异常情况的处理,增强程序的健壮性.容错性,减少程序使用中对用 ...

  8. Linux Kernel 代码艺术——编译时断言

    本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码片段(不关注OS的各个模块的设计思想,此部分我准备写在“深入理解Linux Kernel” 系列文章中),一来通过内核 ...

  9. selenium自动化-java-封断言类2

    封装断言类 package streamax.com; import java.util.ArrayList; import java.util.List; import org.testng.Ass ...

  10. selenium自动化-java-封装断言

    封装的断言. 1 package com.baidu.www; import org.testng.Assert; /* * 封装断言 */ public class assertion { stat ...

随机推荐

  1. Java-Runoob:Java 正则表达式

    ylbtech-Java-Runoob:Java 正则表达式 1.返回顶部 1. Java 正则表达式 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某 ...

  2. mysql server id一样导致报错

    (root@localhost) 16:03:38 [(none)]> show slave status \G; Last_IO_Errno: 1593 Last_IO_Error: Fata ...

  3. 启动 Eclipse 报错 “An internal error occurred during: "Initializing Java Tooling". java.lang.NullPointerException”

    之前在线升级了Eclipse,由于网络/或者是设置问题,在升级完成后启动Eclipse出线上述错误... 解决方法 1. 删除目录工作目录下面的.project文件夹: 如下图: 2. 关闭Eclip ...

  4. java后台获取URL带参demo

    URL:http://aos.wall.youmi.net/v2/check_fb_sig?order=YM130402cygr_UTb42&app=30996ced018a2a5e& ...

  5. Pathway富集分析气泡图

    data.tsv > pathway = read.table("data.tsv",header = T, sep="\t") > library ...

  6. redis 创建集群时 出现的错误解决方式

    1. 创建集群时报以下错误 (1)错误1 ./redis-trib.rb create --replicas 1 XXXXXX:5301 XXXXXX:5302 XXXXXX:5303 XXXXXX: ...

  7. 「小程序JAVA实战」springboot的后台搭建(31)

    转自:https://idig8.com/2018/08/29/xiaochengxujavashizhanspringbootdehoutaidajian31/ 根据下面的图,我们来建立下对应的sp ...

  8. 无法访问win8默认共享(如C$)解决办法

    可以使用此过程允许作为本地 Administrators 组的成员并使用密码身份验证登录的用户在会话过程中使用其管理权限.启动注册表编辑器.单击“开始”,在“开始搜索”框中键入 regedit,然后按 ...

  9. Alternative PHP Cache ( APC )

    简介: Alternative PHP Cache (APC) 是一个开放自由的PHP opcode 缓存.它的目标是提供一个自由.开放和健全的框架用于缓存和优化 PHP 的中间代码,加快 PHP 执 ...

  10. sublime +react+es6开发环境

    Babel Sublime3才有的插件,支持ES6.JSX语法高亮. 菜单->View->Syntax->Open all with current extension as...- ...