当前位置: 首页 > news >正文

golang接口和具体实现之间的类型转换

在 Go 语言中,如果你有一个接口类型的变量,并且你知道它的具体实现类型,你可以使用类型断言将其转换为具体类型。类型断言的语法是 value, ok := interfaceVar.(ConcreteType),其中 interfaceVar 是接口变量,ConcreteType 是具体类型。

package mainimport ("fmt"
)// 定义一个接口
type Animal interface {Speak() string
}// 定义一个具体类型
type Dog struct {Name string
}// 实现接口方法
func (d Dog) Speak() string {return "Woof!"
}func main() {// 创建一个 Dog 的实例,并将其赋值给接口类型的变量var animal Animal = Dog{Name: "Buddy"} // case2:animalb := Animal(Dog{Name: "Buddy"})fmt.Printf("This animal is saying: %s\n", animalb.Speak())// 使用类型断言将接口变量转换为具体类型if dog, ok := animal.(Dog); ok {fmt.Printf("This is a Dog named %s and it says: %s\n", dog.Name, dog.Speak())} else {fmt.Println("The interface does not hold a Dog type")}}
http://www.xdnf.cn/news/229753.html

相关文章:

  • 分布式架构:Dubbo 协议如何做接口测试
  • 定时任务xxl-job国产化改造,适配磐维数据库(PostgreSQL)
  • OpenHarmony - 小型系统内核(LiteOS-A)(完),内核编码规范
  • Arduino项目实战与编程技术详解
  • Python爬虫学习路径与实战指南 04
  • (Go Gin)Gin学习笔记(三)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法
  • 【思考】欧洲大停电分析
  • 0.安装两个版本的JDK8和JDK17并配置环境变量
  • 用Ai学习wxWidgets笔记——自制wxWidgets开发参考手册(主体)
  • MVC与MVP设计模式
  • 数据接收全流程图(物理网卡 → 应用层)
  • 第16篇:Linux设备驱动程序入门<三>
  • 自定义项目中导入文件import顺序
  • 前端 - 冷加载和热加载有什么区别?
  • DeepSeek谈《凤凰项目 一个IT运维的传奇故事》
  • 设计模式(构建者模式)
  • 【计算机视觉】图像分割:Segment Anything (SAM):通用图像分割的范式革命
  • 芯知识|WT2000T录音芯片应用会议录音设备解析:高保真降噪与低功耗兼得
  • 安卓基础(Looper和Handler)
  • React 第三十六节 Router 中 useParams 的具体使用及详细介绍
  • Docker搜索镜像报错
  • OpenCV 图形API(76)图像与通道拼接函数-----对输入图像进行归一化操作函数normalize()
  • OpenCV的grabCut算法分割图像
  • 六、UI自动化测试06--PO设计模式
  • QT—布局管理器之QStackedLayout篇
  • UE5 项目迁移 注意事项记录
  • 永磁同步电机控制算法--线性ADRC转速环控制器(一阶、二阶)
  • canvas动画:点随机运动 距离内自动连接成线 鼠标移动自动吸附附近的点
  • Q2(流动式)起重机司机理论考试精选题及答案
  • 2025年5月计划(Ue4.0shader源码抄写+ue独立游戏每天一小节)