golang中接口对象如何转型
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍golang中接口对象如何转型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!接口对象的转型有两种方式:1. 方式一:instance,ok:=接口对象.(实际类
千家信息网最后更新 2025年01月20日golang中接口对象如何转型
这篇文章主要介绍golang中接口对象如何转型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
接口对象的转型有两种方式:
1. 方式一:instance,ok:=接口对象.(实际类型)
如果该接口对象是对应的实际类型,那么instance就是转型之后对象,ok的值为true
配合if...else if...使用
2. 方式二:
接口对象.(type)
配合switch...case语句使用
示例:
package main import ( "fmt" "math") type shape interface { perimeter() int area() int} type rectangle struct { a int // 长 b int // 宽}func (r rectangle) perimeter() int { return (r.a + r.b) * 2}func (r rectangle) area() int { return r.a * r.b} type circle struct { radios int}func (c circle) perimeter() int { return 2 * c.radios * int(math.Round(math.Pi))}func (c circle) area() int { return int(math.Round(math.Pow(float64(c.radios), 2) * math.Pi))} func getType(s shape) { if i, ok := s.(rectangle); ok { fmt.Printf("长方形的长:%d,长方形的宽是:%d\n", i.a, i.b) } else if i, ok := s.(circle); ok { fmt.Printf("圆形的半径是:%d\n", i.radios) }} func getType2(s shape) { switch i := s.(type) { case rectangle: fmt.Printf("长方形的长:%d,长方形的宽是:%d\n", i.a, i.b) case circle: fmt.Printf("圆形的半径是:%d\n", i.radios) }} func getResult(s shape) { fmt.Printf("图形的周长是:%d,图形的面积是:%d\n", s.perimeter(), s.area())} func main() { r := rectangle{a: 10, b: 20} getType(r) getResult(r) c := circle{radios: 5} getType2(c) getResult(c)}
上面的例子使用的是方式一,如果要使用方式2,可以将getType()函数改为:
func getType(s shape) { switch i := s.(type) { case rectangle: fmt.Printf("图形的长:%.2f,图形的宽:%.2f \n", i.a, i.b) case triangle: fmt.Printf("图形的第一个边:%.2f,图形的第二个边:%.2f,图形的第三个边:%.2f \n",i.a,i.b,i.c) case circular: fmt.Printf("图形的半径:%.2f \n",i.radius) }}
以上是"golang中接口对象如何转型"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
图形
对象
接口
方式
长方形
s.
半径
i.b
内容
圆形
实际
篇文章
类型
r.a
r.b
三个
价值
例子
兴趣
函数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
十一旅游团软件开发
本电脑服务器管理员
如何对sql数据库死锁
软件开发哪个公司靠谱点
软件开发实训系统官方最新版
网络安全培训班工资
国家网络安全宣传图文图文
汨罗软件开发公司
育创网络技术研发部总监
关掉网络安全隔离系统
网络安全宣传周试题答案
无锡先导软件开发
网络安全三无七边是什么
云南服务器代理商
什么网络技术有用
稳定网站服务器租用
网监大队网络安全工作总结
hntd 网络技术与设备
军营网络安全宣传周大讨论
软件开发逾期 起诉
安卓项目软件开发
秦川机床软件开发
广德新能源软件开发服务解决方案
数据库软件 类似Excel
平安校园建设网络安全征文
惠普服务器内存条参数
网络安全微信对话手抄报
服务器集中管理 需求
阿里云服务器 配置
英语培训学校软件开发