• 一、前言
  • 二、代码
  • 三、运行截图

一、前言

go作为一门强类型语言,对数据类型有着严格的区分。当我们尝试封装一个方法时,有时候返回的是interface{}类型。这时,就要对interface类型进行断言操作了

二、代码

package mainimport "fmt"func main() {data := getData()//断言string类型的nameif name, ok := data["name"].(string); ok { //断言data["name"]的值[张三]为string类型fmt.Printf("姓名存在为:%s \n", name)}//断言is_collectisCollect, ok := data["is_collect"].(bool) //断言data["is_collect"]的值是bool类型if ok {fmt.Printf("is_collect存在,为 %t \n", isCollect)}//断言daysdays, ok := data["days"].([]int64) //data["days"]的值的类型是[]int64一维数组if ok {for _, value := range days {fmt.Printf("day的值为:%d \n", value)}}//断言likelike, ok := data["like"].(map[string]interface{}) //data["like"]的值的类型为map[string]interface{}if ok {hobbys := like["hobby"].([]string) //like["hobby"]的值是一个string一维数组for _, value := range hobbys {fmt.Printf("爱好:%s \n", value)}}//断言interfaceinterfaceData, ok := data["interface"].([]interface{}) //断言data["interface"]的值为[]interface{}if ok {fmt.Println("interface数据为------")for _, value := range interfaceData {fmt.Println(value)}}//断言异常测试:这个data["name"]的值是string类型//我们在这里断言为bool类型,程序报错:panic: interface conversion: interface {} is string, not bool//这个interface{}是string类型,不是bool类型errorName := data["name"].(bool)fmt.Print(errorName)
}//自定义数据:用于断言
func getData() map[string]interface{} {data := make(map[string]interface{}) //定义待返回的数据结构//stringdata["name"] = "张三"//bool类型data["is_collect"] = true//[]int64类型,星期1-星期7,days := []int64{1, 2, 3, 4, 5, 6, 7}data["days"] = days//爱好,map[string]interface类型like := map[string]interface{}{"hobby": []string{"读书", "读书", "还是读书"},}data["like"] = like//[]interface{}类型interfaceData := []interface{}{"姓名", 1, true, 3.14}data["interface"] = interfaceDatareturn data
}

三、运行截图

goLang断言简单使用相关推荐

  1. 基于Golang的简单web服务程序开发——CloudGo

    基于Golang的简单web服务程序开发--CloudGo[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 (1)基本要求 (2)扩展要求 三.具体 ...

  2. Golang实现简单爬虫框架(4)——队列实现并发任务调度

    前言 在上一篇文章<Golang实现简单爬虫框架(3)--简单并发版>中我们实现了一个最简单并发爬虫,调度器为每一个Request创建一个goroutine,每个goroutine往Wor ...

  3. golang 编译提示 cannot assign interface {} 和golang断言使用

    golang 编译提示 cannot assign interface {} 和golang断言使用: 从sync.Map中读取值的时候出现如下编译错误,因为返回的是interface类型,需要做转换 ...

  4. nsq Android客户端,NSQ的golang客户端简单使用

    NSQ的golang客户端简单使用 NSQ 是由国外的一个短链服务商bitly使用golang开发的一个消息队列系统,正好使用到了这个东西,在这里简单的记录下. 获取客户端 nsq的golang客户端 ...

  5. Golang实现简单爬虫框架(5)——项目重构与数据存储

    前言 在上一篇文章<Golang实现简单爬虫框架(4)--队列实现并发任务调度>中,我们使用用队列实现了任务调度,接下来首先对两种并发方式做一个同构,使代码统一.然后添加数据存储模块. 注 ...

  6. Golang编写简单图片服务器

    Golang编写简单图片服务器 图片服务器 最近的开发过程中,遇到一个问题,就是大量零碎图片的存储,最后我决定研究一个简单的图像服务器,以解决图像文件存储的性能问题.在此,写一篇博文记录我经历的思想过 ...

  7. Asp.net core与golang web简单对比测试

    最近因为工作需要接触了go语言,又恰好asp.net core发布RC2,就想简单做个对比测试. 下面是测试环境: CPU:E3-1230 v2 内存:16G 电脑有点不给力 操作系统:Centos7 ...

  8. golang断言的使用(Type Assertion)

    golang的语言中提供了断言的功能.golang中的所有程序都实现了interface{}的接口,这意味着,所有的类型如string,int,int64甚至是自定义的struct类型都就此拥有了in ...

  9. golang从简单的即时聊天来看架构演变

    前言 俗话说的好,架构从来都不是一蹴而就的,没有什么架构一开始设计就是最终版本,其中需要经过很多步骤的变化,今天我们就从一个最简单的例子来看看,究竟架构这个东西是怎么变的. 我将从一个最简单的聊天室的 ...

  10. golang 搭建文件服务器,golang实现简单文件服务器

    用golang作一个简单的文件服务器,http包提供了很好的支持,因为时间紧促,只看了http包中本身须要的一小部分,建议你们若是须要仍是去看官网的文档,搜索引擎搜索出来的前几个方法不是很符合需求.g ...

最新文章

  1. scala dynamics 示例
  2. 插值算法C实现(一元全区间)
  3. 启明云端分享|乐鑫ESP32-WROOM-32E和ESP32-WROOM-32UE两款模组的区别
  4. OpenCV使用FacemarkAAM
  5. ssh连接出现:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  6. Github1.3万星,迅猛发展的JAX对比TensorFlow、PyTorch
  7. SAP License:SAP在线帮助的实现
  8. antd table input 失焦的问题
  9. 上计算机课应该有的表现,计算机应用基础学习过程表现
  10. cuda 的driver API 和 runtime API
  11. Wildcard Matching 1
  12. 唯芸星童鞋的第一个博客。
  13. linux之域名更改
  14. 零基础可以学板绘吗?怎么自学板绘?
  15. 【操作系统】文件管理(三)—— 文件的目录结构
  16. 【自建题库】c认证初级
  17. php获取本机IP地址
  18. Qt运行过程中错误未找到信号的符号undefined symbol: _ZN11FileManager12sigTechFilesE4QMapIi7QSt
  19. surface pro 7键盘只能识别功能区,无法输入字母和数字
  20. LaTeX 中插入数学公式

热门文章

  1. radio默认选中第一个_Mybatis学习之路【1】-- 第一个程序
  2. Scala 用Option[T] 避免NullPointerException
  3. html在新网页输出结果是,JavaScript考试试卷
  4. dell服务器修改sata,Dell poweredge r210进BIOS改动磁盘控制器(SATA Controller)接口模式...
  5. C语言编程中 提取运行时间的函数,C语言中用于修改文件的存取时间的函数使用...
  6. arduino 读取当前时间_Arduino使用DS1302读取时间
  7. 云计算需要python吗_云计算开发学习笔记:Python的环境搭建
  8. sdp ddp内存怎么分_小鑫课堂 | 多余的内存不要浪费,拿来做硬盘吧
  9. 局域网无法访问共享新方法
  10. 工具型产品的设计感想