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

golang接口

1.概念

golang接口是一个动态类型动态值的集合,定义了对象的行为,不指定实现。只要一个类型定义了接口全部的方法,就可被认为是实现接口
**动态类型:**实现接口的具体数据类型
**动态值:**实现接口的数据的值或者引用

//定义接口
type Speaker interface{Speak()
}//实现接口的类型
type Duck struct{}//实现接口要求的方法
func (Duck)Speack(){fmt.Println("lalala")
}func main(){var s Speaker =Duck{} //接口赋值s.Speack()  //接口方法调用
}

2.接口类型断言与类型判断

类型断言

value := interfaceValue.(T)//返回两个值:提取的值和一个布尔值 ok,如果断言成功,ok 为 true,否则为 false
value, ok := interfaceValue.(T)
func main() {var i interface{} = 42// 类型断言(不安全)不匹配会panicv := i.(int) // 成功,v 是 int 类型fmt.Println(v)// 类型断言(安全)v2, ok := i.(float64)if ok {fmt.Println("Success:", v2)} else {fmt.Println("Type assertion failed")}
}

类型判断

switch v := interfaceValue.(type) {
case T1:// interfaceValue 的动态类型是 T1
case T2:// interfaceValue 的动态类型是 T2
default:// interfaceValue 的动态类型是其他
}

3.接口的nil判断

当接口的type和value都为nil时,接口本身才为nil
接口赋值为nil时,接口类型不为nil,所以接口
参考面试鸭

http://www.lryc.cn/news/524420.html

相关文章:

  • LeetCode:37. 解数独
  • 数据结构与算法之递归: LeetCode 37. 解数独 (Ts版)
  • 【氮化镓】香港科技大学陈Kevin-单片集成GaN比较器
  • axios的使用总结
  • 革新未来:高效智能数字人技术引领多元化应用
  • 使用批处理文件清除系统垃圾
  • 总结5..
  • Java 在包管理与模块化中的优势:与其他开发语言的比较
  • LLMs(大型语言模型)的多智能体:Auto-GPT
  • CPU狂飙900%如何分析?怎么定位?怎么溯源处理
  • Excel 技巧17 - 如何计算倒计时,并添加该倒计时的数据条(★)
  • Java中的阻塞队列--以LinkedBlockingQueue为例
  • 16.5万煤气柜柜位计故障分析
  • 高效沟通驱动LabVIEW项目成功
  • 大模型之三十三- 开源Melo 语音合成
  • 论文复现:四轮转向车辆后轮转角控制方法研究
  • 【UFEN】基于多层特征融合和多任务学习的多模态情感分析
  • uniapp的插件开发发布指南
  • 【Linux系统】—— 编译器 gcc/g++ 的使用
  • [微服务]注册中心优化
  • C++ ——— 模拟实现 vector 类
  • 大华相机DH-IPC-HFW3237M支持的ONVIF协议
  • 【Java】常用工具类方法:树形结构、获取IP、对象拷贝、File相关、雪花算法等
  • 豆瓣电影Top250的数据采集与可视化分析(scrapy+mysql+matplotlib)
  • 2024微短剧行业生态洞察报告汇总PDF洞察(附原数据表)
  • PHP语言的数据库交互
  • flutter跨端UI框架简介
  • 自动化标注平台开源,基于 yolov8标注平台可本地部署
  • Walrus Learn to Earn计划正式启动!探索去中心化存储的无限可能
  • 第35天:安全开发-JavaEE应用原生反序列化重写方法链条分析触发类类加载