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

从sync.Map中读取值的时候出现如下编译错误,因为返回的是interface类型,需要做转换才能使用,golang提供了类型断言来实现这类转换:

(type interface {} is interface with no methods)

格式如下:

t := i.(T)
这个表达式意思是接口i是T类型,并将它的值赋值给t。
如果i不是类型T,则这样写会引起panic。为了防止panic,可能写成下面这样:t, ok := i.(T)
如果接口i的类型是T,则ok则为true,否则为false。

用例:

package mainimport "fmt"func main() {var i interface{} = "hello"s := i.(string)fmt.Println(s)s, ok := i.(string)fmt.Println(s, ok)f, ok := i.(float64)fmt.Println(f, ok)f = i.(float64) // panicfmt.Println(f)
}

运行结果:

参考文档:

1. https://tour.golang.org/methods/7

2. https://www.cnblogs.com/xiaopipi/p/4889212.html

golang 编译提示 cannot assign interface {} 和golang断言使用相关推荐

  1. golang编译错误 copying /tmp/go-build069786374/b001/exe/a.out: No such file or directory 解决方法

    问题: linux虚拟机 golang编译 报错 copying /tmp/go-build069786374/b001/exe/a.out: No such file or directory 原因 ...

  2. golang编译之vendor机制

    原文地址:golang编译之vendor机制 Go 1.5引入了vendor 机制,但是需要手动设置环境变量 GO15VENDOREXPERIMENT= 1,Go编译器才能启用.从Go1.6起,,默认 ...

  3. golang编译时报错:Get “https://proxy.golang.org/github.com/antihax/optional/@v/v1.0.0.mod“: dial tcp 172.2

    一.问题 golang编译grpc-gateway时,报错: 二.解决 一行代码设置搞定 go env -w GOPROXY=https://goproxy.cn

  4. 【Golang第1~3章:基础】如何安装golang、第一个GO程序、golang的基础

    介绍 本人是个菜鸡,这个是在B站上看边看视频边做的笔记,这一章是编程语言的基础 有变量.常量.数据类型.指针.标识符.运算符.流程控制,具体请看[文章目录] 配套视频自己去B站里面搜[go语言],最高 ...

  5. 爱上开源之golang入门至实战-使用IDE开发Golang

    使用IDE开发Golang 上一节,使用文本编辑器,我们开启了golang之旅,除了通过文本编辑器的方式来进行程序开发,我们还可以通过使用golang的集成开发环境工具(IDE)来进行更高效率,更快速 ...

  6. golang 实践配合 php 进行 web 开发,golang 适合做web开发吗

    使用go语言来做web开发,是非常方便的.如果不使用框架,仅仅使用net/http包,也能快速开发一个web应用.但是,官方包不支持RESTful风格的API,所以我们依然还是需要选择一个框架来帮助我 ...

  7. Xamarin.iOS项目编译提示Could not AOT the assembly

    Xamarin.iOS项目编译提示Could not AOT the assembly 错误信息:Could not AOT the assembly **************.dll 这个错误是 ...

  8. Xamarin.Android编译提示找不到mscorlib.dll.so文件

    Xamarin.Android编译提示找不到mscorlib.dll.so文件 错误信息:AOT module 'mscorlib.dll.so' not found: Cannot load lib ...

  9. 使用ASIHTTPRequest 编译提示找不到libxml/HTMLparser.h的解决方法

    使用ASIHTTPRequest xcode编译提示找不到"libxml/HTMLparser.h",解决方法如下: 1>.在xcode中左边选中项目的root节点,在中间编 ...

最新文章

  1. 与http协作的web服务器、http首部(第五章、第六章)
  2. 5 大常用机器学习模型类型总结
  3. 解决问题的反馈机制_谈谈HBase中的Nonce机制
  4. atob和btoa的趣谈
  5. 语音处理入门——语音的声学处理
  6. java循环队列_Java 循环队列的实现
  7. 算法总结系列之八:复读机的故事 - 散列表.NET应用的研究(下集)
  8. 微信小程序想通过场景化缩短路径
  9. python读取rtf文件_基于 RTF specification v1.7 的 RTF 文件解析及 OLE 对象提取(使用 Python 开发)...
  10. 静默安装Oracle19c软件与数据库
  11. C# 复数类 Complex
  12. Java基础知识与集合部分面试题整理
  13. 实用一位加法电路-全加器(全加器真值表、全加器的逻辑组合电路)、几种基本组合逻辑电路真值表 补充:逻辑电路基础:与门、或门、非门----计算机组成原理
  14. 快递单号查询物流筛选出代收单号
  15. mybatis对布尔类型的处理
  16. 什么是Oauth2.0授权,四种授权模式
  17. 相关性系数替代模型预测得分
  18. 判断FTP文件是否传输完成
  19. 【百度网盘安装不了怎么办】
  20. 【x86架构】架构基础

热门文章

  1. ubuntu多节点安装kubernetes
  2. 【leetcode】3 minstack
  3. 兼容Mono的下一代云环境Web开发框架ASP.NET vNext
  4. MFC遍历窗体所有的控件
  5. .Net Discovery系列之十一-深入理解平台机制与性能影响 (中)
  6. 用反向传导模拟共振并用共振频率作分类
  7. 安徽师范大学计算机专业导师,安徽师范大学数学计算机科学学院导师介绍:罗永龙...
  8. 可以用JAVA编程的物联网开发板,了解一下?
  9. 罗永浩直播带货观后感!首秀破纪录,罗永浩直播带货清单及感受
  10. 【PC工具】windows批处理脚本一键bat脚本编辑器,bat转exe工具使用方法,附helloworld参考例程...