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

Golang|使用函数作为参数和使用接口的联系

  • 函数作为数据类型的一种,可以成为其他函数的参数。
  • 在 Go(Golang) 中,函数作为参数 和 接口(interface),本质上都和抽象、灵活调用有关 —— 都是让代码更灵活、更可扩展的手段。
  • 不过它们各有侧重,联系在于:
    • 都是用来传递“行为”或“能力”,而不是传递具体的数据。
    • 本质上都是一种“面向抽象编程” —— 只关心"做什么",不关心"具体怎么做"。

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

// Go把函数当成一种一等公民(first-class citizen),你可以像传递变量一样传递函数。package mainimport "fmt"// 函数作为参数
func operate(a, b int, op func(int, int) int) int {return op(a, b)
}func add(x, y int) int {return x + y
}func main() {result := operate(3, 4, add)fmt.Println(result) // 输出 7
}
// 接口定义的是一组方法的集合。任何类型,只要实现了这些方法,就可以被赋值给接口变量。package mainimport "fmt"// 定义一个接口
type Operator interface {Operate(a, b int) int
}// 一个实现了 Operator 接口的类型
type AddOperator struct{}func (AddOperator) Operate(a, b int) int {return a + b
}func compute(a, b int, op Operator) int {return op.Operate(a, b)
}func main() {add := AddOperator{}result := compute(3, 4, add)fmt.Println(result) // 输出 7
}
http://www.xdnf.cn/news/193897.html

相关文章:

  • 23种设计模式
  • STM32N6570-DK ISP调试
  • UDP 报文结构与注意事项总结
  • 每日c/c++题 备战蓝桥杯(P1093 [NOIP 2007 普及组] 奖学金)
  • 勘破养生伪常识,开启科学养生新篇
  • 发那科机器人(基本操作、坐标系、I/O通信)
  • JVM——引入
  • STM32裸机编程架构与思路
  • LangChain4j +DeepSeek大模型应用开发——2 接入其他大模型
  • 练习普通话,说话更有节奏
  • Odoo 18 中计划、待办、项目管理模块解析
  • re题(49)BUUCTF-crackMe
  • 【深度剖析】贵州茅台的数字化转型(2025)(中1)
  • Spring的BeanFactory和FactoryBean的区别
  • springboot dev process
  • JVM模型、GC、OOM定位
  • [250428] Nginx 1.28.0 发布:性能优化、安全增强及新特性
  • wps批注线条怎么取消去掉wps批注后有竖线
  • CentOS7——Docker部署java服务
  • 基于常微分方程的神经网络(Neural ODE)
  • 如何通过Google Chrome增强网页内容的安全性
  • 低空经济无人机创新实训室解决方案
  • 亚马逊环保标识运营指南:抢占流量新赛道的6大策略解析
  • 读论文《Deep learning-assited pulsed discharge plasma catalysis modeling》2023 ECM
  • Android Studio 2024版,前进返回按钮丢失解决
  • springboot项目之websocket的坑:spring整合websocket后进行单元测试后报错的解决方案
  • Qt6.8.2中WebAssembly沙盒环境中预加载文件
  • Cursor
  • 可视化图解算法:合并二叉树
  • JVM 生产环境问题定位与解决实战(八):实战篇——正则表达式回溯引发的CPU 100%