golang中接口对象如何转型
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍golang中接口对象如何转型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!接口对象的转型有两种方式:1. 方式一:instance,ok:=接口对象.(实际类
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
软件开发的新增和优化
简述数据库设计的包括哪些阶段
软件开发和网页哪个好
中专软件开发好不好学
硬盘数据库修复
网络安全打油诗题目
远控软件开发
邮箱smtp服务器
数据库 研究方向
药品广告数据库玉林视5秒
为什么要租服务器
南昌软件开发制作
做项目的软件开发
安徽计算机网络技术文科专升本
党外代表人士数据库 表格
dnf台服数据库修改等级
黑龙江软件开发公司地址
电脑服务器编号有用吗
晋宁区专业性软件开发厂家价格
深圳服务器电源哪种好
呼和浩特市软件开发培训
图书馆座位预约系统数据库代码
武大国家网络安全学院规划
sphinx是数据库么
软件开发可以用手机吗
党外代表人士数据库 表格
关于网络技术人物访谈报告
上海优助互联网科技有限公司
网络服务安全服务器孵化器夫
西安地区软件开发招聘