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

interface接口和defer场景分析

接口

接口这里主要两点:

  1. 设计业务结构时采用依赖倒转:业务层向下依赖抽象层,实现层向上依赖抽象层。

相比于之前:

image-20250519222508020

之后:

image-20250519222151502

  1. 注意struct中嵌套interface和不嵌套interface的区别:

    type Myinterface interface{func Do()
    }// 未嵌套interface
    type Struct1 struct{
    }func (*Struct1) Do(){...}// 嵌套interface
    type Struct2 struct{Myinterface
    }struct1 := &Struct1{}
    struct2 := &Struct2{Myinterface : struct1
    }// 当然,mystruct2在Interface被赋值的前提下,也可以重写部分Myinterface的方法
    func (*Struct2) Do(){...2}// 结果相同,mystruct2直接复用mystruct1的Do方法
    struct1.Do()
    struct2.Do()// 结果改变
    struct2.Do()
    

    注意本质:

    任何实现接口的方式都要全部实现接口的方法,可以组合方法。

defer场景分析

场景:

  1. 执行顺序:栈(先进后出).

  2. defer 和 return 的执行顺序:return 表达式先执行;defer 后执行.

  3. 函数返回值在栈上:①有名 ②作用于整个函数域.

  4. 基于 3,函数遇到 defer 时,defer 会修改基于 return 的值.

  5. defer + panic(不捕获,异常传递,程序异常终止,调用栈正常)

  6. defer + panic(捕获,异常传递中断,原函数继续执行,调用栈恢复)
    总之:panic 后语句不执行.

  7. defer 中有 panic:recover 只捕获一个 panic(最后一个 panic )
    panic 覆盖(后覆盖前).

  8. defer + 子函数:defer function (1, function [2,0]);先执行参数表达式;再执行函数.

  9. defer 压栈时的参数已经确定(形参不变,实参可变).

    eg: 
    {...defer func (i int){fmt.Println(i)                     -> i=0fmt.Println(t)   		           -> t=2}(t)t=2 			                       -> t=2return
    }
    defer 压栈时参数已经确定赋值给 i,i为0,然后被修改为2,则t=2
    
http://www.xdnf.cn/news/7420.html

相关文章:

  • C++--内存管理
  • 动态规划-LCR 089.打家劫舍-力扣(LeetCode)
  • 国产化替代对金融行业有哪些影响?如何应对?
  • 创业与产品设计中的“三个一”法则
  • 基于正点原子阿波罗F429开发板的LWIP应用(1)——网络ping通
  • 前端测试策略:单元测试到 E2E 测试
  • ASIC和FPGA,到底应该选择哪个?
  • C# NX二次开发-求体、面的最小包容圆柱
  • 使用 nvm 管理 Node.js 和 npm 版本
  • Scala:size 和 length 的区别
  • 深入浅出IIC协议 -- 第二篇:FPGA数字接口设计方法论
  • IEEE Communications Magazine 2025年1-3月论文速览
  • 理解PostgreSQL查询执行计划(三)--复杂操作篇
  • TB开拓者策略交易信号闪烁根因及解决方法
  • flatMap():map + flat 的组合,简化 JavaScript 数组处理逻辑
  • ARMv7的NVIC中断优先级
  • MYSQL8.0常用窗口函数
  • Qt Widgets模块功能详细说明,基本控件:QCheckBox(三)
  • winrar 工具测试 下载 与安装
  • 计算机网络 第三章:运输层(一)
  • mcp 学习第二篇
  • Python在自动驾驶数据清洗中的应用
  • Java后端面试八股文大全(2025最新版)
  • 5月19日复盘-YOLOV4
  • 采用CDN技术时域名解析流程
  • Java-List集合类全面解析
  • DAY 30 模块和库的导入
  • 扫描网络内所有设备的IP地址
  • 专题讨论3:基于图的基本原理实现走迷宫问题
  • (二十二)Java File类与IO流全面解析