码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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博客

  • 相关阅读:
    Android 低功耗蓝牙开发简述
    MySQL8.0 忘记 root 密码
    网页制作基础大三dw作业 基于HTML+CSS+JavaScript新能源汽车租赁(6个页面)
    java学生成绩管理信息系统
    代码随想录第44天 | ● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划
    wmware14虚拟机安装麒麟操作系统
    华为路由器如何配置静态路由
    企业大语言模型智能问答的底层基础数据知识库如何搭建?
    128天创作纪念日
    保研之旅·终
  • 原文地址:https://blog.csdn.net/weixin_57023347/article/details/139608296
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号