golang中有哪些断言类型
发表于:2024-10-25 作者:千家信息网编辑
千家信息网最后更新 2024年10月25日,今天就跟大家聊聊有关golang中有哪些断言类型,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1)语法一t := i.(T)解释说明:T:表示
千家信息网最后更新 2024年10月25日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 main
import "fmt"
func main() {
var i interface{} = "hello world"
str := i.(string) // 1.接口i是string类型,会将"hello world"赋值给str
fmt.Println(str)
s, ok := i.(string) // 2.接口类型是string,会将"hello world"赋值给s,并且ok=true
fmt.Println(s, ok)
idx, ok := i.(int) // 3.接口类型不是int,ok=false,idx不会从i获取到数值
fmt.Println(idx, ok)
idx = i.(int) // 4.接口i不是int类型,会触发panic
fmt.Println(idx)
}
Output:
hello world
hello world true
0 false
panic: interface conversion: interface {} is string, not int
goroutine 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 main
import (
"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 I
i = A{} // dynamic type of i is A
fmt.Printf("%T\n", i.(A))
// i.fly() // 报错:./prog.go:26:6: i.fly undefined (type I has no field or method fly)
var j J
j = i.(J) // 这里将i中的值转换成接口J这一个类型
fmt.Printf("%T\n", j)
j.fly()
}
Output:
main.Amain.Afly!
看完上述内容,你们对golang中有哪些断言类型有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
类型
接口
i.
动态
例子
功能
检查
成功
内容
变量
表达式
语句
不同
写法
场景
换句话说
数值
数据
方法
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
浙江无锡网络技术有限公司
网络安全答题怎样查看全部成绩
软件开发公司有哪些优惠政策
项目网络安全风险自评估报告
pas网络安全
pb 数据库
公司必须有网络安全员吗
求生之路云服务器
苹果提示连接服务器时出现错误
安卓上的数据库文件
服务器网络安全解决方案
mssql数据库有什么用
本地替换服务器上传的pdf
雅图cad数据库报错
盐田服务器设备供货商哪里有
互联网科技演示文稿
图书数据库管理
网络技术培训机构多少钱
私有服务器
中国篮球数据库沈梓捷
浙江大数据软件开发正规平台
联想服务器更改从硬盘启动
软件开发还可以在哪里找
数据库BWA是什么的缩写
优质的香港服务器
服务器干什么用的
江西省百万网名学法律网络安全法
网络打印服务器怎么开
惠普服务器 做raid
厦门无线网络安全