golang中有哪些断言类型
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天就跟大家聊聊有关golang中有哪些断言类型,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1)语法一t := i.(T)解释说明:T:表示
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
互联网科技名片
互联网科技公司排名
互联网科技工作委员会主任
科技和互联网公司
互联网科技未来
狮子座互联网科技
有马互联网科技
互联网金融和金融科技
青海省互联网新科技
阿里巴巴算科技企业还是互联网
中国互联网有什么科技含量
互联网企业和科技型企业
互联网为啥属于高科技
互联网媒体平台算高科技产业
世界互联网领先科技成果获奖
互联网科技圈年度人物
互联网科技数字货币
盐城市攀科互联网科技有限公司
重庆科技产业互联网有哪些
互联网科技自媒体灵感
中关村互联网科技集团
喔噻互联网科技
广州紫鲸互联网科技
甘肃拓世互联网科技有限公司
智腾互联网科技有限公司
互联网企业科技类企业如何做账
互联网科技股为什么大涨
互联网领先科技活动
唐山双旺合互联网科技产业园
科技互联网公司两年变化