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

go 语言中的类型判断

_. ok := interface{}(a).(B)

此语句用于判断对象a是否是B类型

也可以判断对象a是否实现了B接口

package mainimport "fmt"type Pet interface {SetName(name string)Name() stringCategory() string
}
type Dog struct {name string
}func (dog *Dog) SetName(name string) {dog.name = name
}
func (dog Dog) Name() string {return dog.name
}
func (dog Dog) Category() string { return "dog" }
func main() {dog := Dog{"little pig"}_, ok := interface{}(dog).(Pet)fmt.Printf("Dog implements interface Pet: %v\n", ok)_, ok = interface{}(&dog).(Pet)fmt.Printf("*Dog implements interface Pet: %v\n", ok)fmt.Println()var pet Pet = &dogfmt.Printf("This pet is a %s, the name is %q.\n",pet.Category(), pet.Name())
}

输出为:

Dog implements interface Pet: false*Dog implements interface Pet: trueThis pet is a dog, the name is "little pig".

一个指针类型实现了某某接口类型,但它的基本类型却不一定能够作为该接口的实现类型。

怎样判定一个数据类型的某一个方法实现的就是某个接口类型中的某个方法呢?

这有两个充分必要条件:

  • 一个是两个方法的签名需要完全一致
  • 另一个是两个方法的名称要一模一样

显然,这比判断一个函数是否实现了某个函数类型要更加严格一些。
这就意味着,Dog类型本身的方法集合中只包含了2个方法, 也就是所有的值方法。而它的指针类型*Dog方法集合却包含了 3 个方法

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

相关文章:

  • java基于ssm的房源管理系统+vue论文
  • RH850P1X芯片学习笔记-A/D Converter (ADCF)
  • 38 调优kafka
  • java推荐系统:好友推荐思路
  • java: 写入数据到HBase
  • 机器学习-基于Word2vec搜狐新闻文本分类实验
  • 5.vue学习笔记(数组变化的侦测+计算属性+Class绑定)
  • Java十种经典排序算法详解与应用
  • git常用命令及概念对比
  • 57、python 环境搭建[for 计算机视觉从入门到调优项目]
  • K8S-应用访问
  • 商智C店H5性能优化实战
  • Unity 使用 Plastic 同步后,正常工程出现错误
  • 详细设计文档该怎么写
  • 集团企业OA办公协同平台建设方案
  • Spring Security之认证
  • 智能语音机器人NXCallbot
  • Vue 3中toRaw和markRaw的使用
  • 移动神器RAX3000M路由器不刷固件变身家庭云之三:外网访问家庭云
  • 基于多反应堆的高并发服务器【C/C++/Reactor】(中)线程池的启动和从线程池中取出一个反应堆实例
  • go语言gin框架的基本使用
  • TypeScript 从入门到进阶之基础篇(六) 类型(断言 、推论、别名)| 联合类型 | 交叉类型
  • Linux操作系统基础(14):文件管理-文件属性命令
  • metaSPAdes,megahit,IDBA-UB:宏基因组装软件安装与使用
  • Apache、MySQL、PHP编译安装LAMP环境
  • L1-087:机工士姆斯塔迪奥
  • 如何做一个炫酷的Github个人简介(3DContribution)
  • 基于单片机的护理床控制器设计
  • 《3D数学基础-图形和游戏开发》阅读笔记 | 3D数学基础 (学习中 1.6更新)
  • 解锁测试性能瓶颈:深度探讨JMeter分布式性能测试!