Go语言结构体内嵌接口

前言

        在golang中,结构体内嵌结构体,接口内嵌接口都很常见,但是结构体内嵌接口很少见。它是做什么用的呢?

        当我们需要重写实现了某个接口的结构体的(该接口)的部分方法,可以使用结构体内嵌接口。

作用

  • 继承赋值给接口的结构体的方法。

        空接口:需要先断言类型,再通过变量访问方法。

        确定接口,匿名字段,内嵌方法,可以直接访问。不是匿名字段,需要通过变量名访问。

  •  重写继承结构体的方法

​​​​​​​        条件:

  1. 接口需要是匿名字段,嵌入方法。
  2. 重写接口方法。

        空接口:赋值接口体的方法不能重写,因为空接口一开始不能确定类型,并且不能定义为匿名字段。

        确定接口:

        假设现在有一个需求,重写Cat的Walk方法,并且Speak方法保持不变。

        当然我们可以重新创建一个结构体,实现接口中所以的方法来实现。但是如果这个接口又很多方法,全部实现一遍就有点小题大做了,而且我们只是需要重写部分方法,其它方法保持不变。

        这个时候我们可以通过结构体内嵌接口来实现。

        新增一个JiaFeiCat结构体,初始化时将Cat类型的变量传入,JiaFeiCat结构体定义一个Walk方法,这个方法会覆盖Cat的同名方法,从而实现了Walk方法的重写。

总结

结构体内嵌接口的作用:

  • 不依赖具体实现:即接口为A,结构体B1、B2实现了接口A,结构体C内嵌了A,那么C.A可以通过B1/B2实例化;
  • 对接口类型进行重写:当C.A通过B1实例化后,C和B1的关系,可以转变为结构体C内嵌结构体B1,那么C可以直接使用B1中的所有方法,当然C也可以对B1中的方法进行重写,这里官方文档这样解释“Interface and we can override a specific method without having to define all the others.”

 参考:

golang接口用法之:结构体内嵌匿名接口_golang 匿名接口-CSDN博客

相关推荐

  1. Go语言 Interface(接口)

    2024-06-16 16:32:03       38 阅读
  2. Go语言结构

    2024-06-16 16:32:03       26 阅读
  3. Go语言结构

    2024-06-16 16:32:03       34 阅读
  4. go语言接口接口类型

    2024-06-16 16:32:03       33 阅读
  5. go语言接口之sort.Interface接口

    2024-06-16 16:32:03       38 阅读
  6. go语言接口之http.Handler接口

    2024-06-16 16:32:03       30 阅读
  7. Go系列】 Go语言数据结构

    2024-06-16 16:32:03       17 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-16 16:32:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-16 16:32:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-16 16:32:03       82 阅读
  4. Python语言-面向对象

    2024-06-16 16:32:03       91 阅读

热门阅读

  1. python 去除图片马赛克

    2024-06-16 16:32:03       33 阅读
  2. qgis导入excel文件

    2024-06-16 16:32:03       25 阅读
  3. pytorch支持更多onnx算子

    2024-06-16 16:32:03       32 阅读
  4. 一血c++

    2024-06-16 16:32:03       27 阅读
  5. (简单)html转图片-html2canvas

    2024-06-16 16:32:03       28 阅读
  6. v3+ts/request封装axios

    2024-06-16 16:32:03       30 阅读
  7. Vue基础面试题(三)

    2024-06-16 16:32:03       29 阅读
  8. Web前端指令符:解码、应用与挑战

    2024-06-16 16:32:03       24 阅读
  9. 【无标题】

    2024-06-16 16:32:03       21 阅读
  10. 超级数据查看器 教程pdf 1-31集 百度网盘

    2024-06-16 16:32:03       39 阅读