golang中有哪些断言类型
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,今天就跟大家聊聊有关golang中有哪些断言类型,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1)语法一t := i.(T)解释说明:T:表示
千家信息网最后更新 2025年12月02日golang中有哪些断言类型
今天就跟大家聊聊有关golang中有哪些断言类型,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
1)语法一
t := i.(T)
解释说明:
T:表示的是具体的数据类型,i:表示的是接口变量i,t:表示的是转换之后的变量。
功能介绍:
这个语句实现的功能是:将接口变量i按照类型T转换成t,其中t中的值是i转换得来的,一旦转换不成功就会触发一个panic。
2)除此之外还有另外一个写法:
t, ok := i.(T)
功能介绍:
表达式里面多了一个ok,实现的功能是:将接口i按照类型T转换成t,如果类型匹配ok=true,如果类型不匹配,ok=false。改语句不会触发panic。
3)例子如下所示:
package mainimport "fmt"func main() {var i interface{} = "hello world"str := i.(string) // 1.接口i是string类型,会将"hello world"赋值给strfmt.Println(str)s, ok := i.(string) // 2.接口类型是string,会将"hello world"赋值给s,并且ok=truefmt.Println(s, ok)idx, ok := i.(int) // 3.接口类型不是int,ok=false,idx不会从i获取到数值fmt.Println(idx, ok)idx = i.(int) // 4.接口i不是int类型,会触发panicfmt.Println(idx)}
Output:
hello worldhello world true0 falsepanic: interface conversion: interface {} is string, not intgoroutine 1 [running]:main.main()/tmp/sandbox277669744/prog.go:17 +0x1f4
3.断言类型的使用场景:
1)T的类型是具体类型
类型断言检查x的动态类型是否等于具体类型T。如果检查成功,类型断言返回的结果是x的动态值,其类型是T。
例子可以参考2中的例子,并无特别的不同之处。
2)T的类型是接口类型
类型断言检查x的动态类型是否满足T。如果检查成功,x的动态值不会被提取,返回值是一个类型为T的接口值。换句话说,到接口类型的类型断言,改变了表达式的类型,改变了(通常是扩大了)可以访问的方法,且保护了接口值内部的动态类型和值。
例子:
package mainimport ("fmt")type I interface {walk()}type J interface {fly()}type A struct{}func (a A) walk() {fmt.Println("walk!")}func (a A) fly() {fmt.Println("fly!")}func main() {var i Ii = A{} // dynamic type of i is Afmt.Printf("%T\n", i.(A))// i.fly() // 报错:./prog.go:26:6: i.fly undefined (type I has no field or method fly)var j Jj = i.(J) // 这里将i中的值转换成接口J这一个类型fmt.Printf("%T\n", j)j.fly()}
Output:
main.Amain.Afly!
看完上述内容,你们对golang中有哪些断言类型有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
类型
接口
i.
动态
例子
功能
检查
成功
内容
变量
表达式
语句
不同
写法
场景
换句话说
数值
数据
方法
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
石碣定制软件开发
大学的数据库如何使用
网上教育软件开发有用吗
服务器硬盘突然读不到
攻击英雄联盟服务器
linux服务器中文
筑牢网络安全基础
数据库与txt存储数据的区别
台州海量软件开发
应聘网络技术员的问题和答案
网络安全心得体会手写
黄山财务软件开发
一般纳税人用哪个软件开发票
武汉网络安全专业
服务器地址可以是公网嘛
深圳网络技术进出口
股票交易数据库有多大
海口网络安全老品牌
网络安全现状出现哪些新的特点
网络安全警察定义
如何将数据库系统分离
u盘装dell服务器系统
网络安全聊天室2期
郑州高新区网络安全吗
盐城管理软件开发
杭州金坞网络技术有限公司
欧洲国家版权意识提高数据库
上海网络技术开发联系人
物联网网络安全的全球性
景德镇市软件开发到哪里找