当前位置: 首页 > news >正文

关于类型断言的小细节

第一:类型断言是什么?

答:类型断言是go语言中专门用来判断空接口承接数据的类型的一种方式

第二:类型断言的语法?

- 第一是用一个变量去承接类型断言,如果类型判断符合,就会返回空接口承接的本来的值,如果不正确就会引发panic。

package mainimport "fmt"func main() {var try interface{} = 1v := try.(int)fmt.Printf("变量try的类型确实是int类型,值为%d\n", v)}
//输出为变量try的类型确实是int类型,值为1
package mainimport "fmt"func main() {var try interface{} = 1v := try.(string)fmt.Printf("变量try的类型确实是int类型,值为%d\n", v)}panic: interface conversion: interface {} is int, not stringgoroutine 1 [running]:
main.main()/Users/wangziheng01/go/src/main/main.go:8 +0x34
exit status 2

- 第二就是用两个变量却承接类型断言,如果判断错误(即接口值的类型与断言的类型不匹配),那么

第一个返回值将是断言类型的零值,第二个返回值将是 false。

package mainimport "fmt"func main() {var try interface{} = 1v, ok := try.(string)if ok {fmt.Printf("变量ok的值为%v\n", ok)fmt.Printf("变量try的值是%v\n", v)} else {fmt.Printf("变量ok的值为%v\n", ok)fmt.Printf("变量try的值是%v\n", v)}}
/*
变量ok的值为false
变量try的值是
/*

假如判断正确,那么第一个返回值就是原来的值,第二个返回值就是true。

package mainimport "fmt"func main() {var try interface{} = 1v, ok := try.(int)if ok {fmt.Printf("变量ok的值为%v\n", ok)fmt.Printf("变量try的值是%v\n", v)} else {fmt.Printf("变量ok的值为%v\n", ok)fmt.Printf("变量try的值是%v\n", v)}}
/*
变量ok的值为true
变量try的值是1
/*

第三:类型断言常用于判断空接口类型的方式?

package mainfunc main() {var try interface{} = 1switch try.(type) {case int:println("int")case string:println("string")case bool:println("bool")default:println("other")}}

结果就会输出 int。

另外,value.(type) 是 Go 语言中的一个特殊语法,用于在 switch 语句中获取接口值的具体类型。这种语法只能在 switch 语句中使用,不能在其他地方使用。

相关文章:

  • 【SAP MM SD FICO】销售视图和会计视图
  • 数据库——MongoDB
  • Java判断规则工具类
  • 【杂谈】-递归进化:人工智能的自我改进与监管挑战
  • 60天python训练计划----day50
  • 如何判断Cursor邮箱被封?
  • 《ZLMediaKit 全流程实战:从部署到 API 调用与前后端集成》
  • 【生物信息学】摇摆配对(Wobble Hypothesis)
  • RAG系统向量数据库选型与Prompt Engineering鲁棒性测试实践
  • 人工智能产业融合新时代:路径、挑战与战略思维
  • 从设备监控到人员调度,可视化赋能车间全场景
  • KubeSphere 容器平台高可用:环境搭建与可视化操作指南
  • go全局配置redis,全局只需要连接一次,然后全局可以引用使用
  • 光伏功率预测 | BP神经网络多变量单步光伏功率预测(Matlab完整源码和数据)
  • filebeat原理架构
  • 可视化在车间质量管控中的创新应用,提升品质
  • QT中实现tcp连接
  • 计算机网络笔记(三十四)——5.6TCP可靠传输的实现
  • node+express+jwt+sequelize+mysql+本地服务器部署前端+云服务器公网部署:入门教程
  • 2N65-ASEMI电源领域核心组件2N65
  • 南宁网站设计图/百度推广方法
  • 网站建设中企动力/网站推广的目的
  • 网站推广策划的策略/全网品牌推广
  • 网站企业建设/长沙seo网站排名优化公司
  • 企业做网站需要什么/佛山网络公司 乐云seo
  • 面对撞库 网站应该怎么做/定制化网站建设