当前位置: 首页 > 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
}

相关文章:

  • 如何使用 Redis 缓存验证码
  • 【MCP Node.js SDK 全栈进阶指南】高级篇(1):MCP多服务器协作架构
  • 在视图中交互 闪退问题
  • 有哪些和PPT自动生成有关的MCP项目?
  • 多实例情况下,实例名较长dbca失败
  • TimDbg
  • Shell脚本-随机数实战案例
  • 排序--数据结构初阶(4)(C/C++)
  • Vuex(二) —— 用Vuex完成购物车案例
  • Python3:Jupyterlab 安装和配置
  • yolov5 源码 +jupyter notebook 笔记 kaggle
  • 贪心算法-2208.将数组和减半的最小操作数-力扣(LeetCode)
  • 喷泉码在物联网场景下的案例分析
  • 安达发|高效智能塑料切割数控系统 - 全自动化软件解决方案
  • 使用python实现自动化拉取压缩包并处理流程
  • 怎么样才能在idea中写入spark程序
  • 如何在 IntelliJ IDEA 中编写 Speak 程序
  • 2023ICPC合肥题解
  • 深入解读:2024数据资产场景化评估案例手册(第二期)【附全文阅读】
  • Linux中的系统延时任务和定时任务与时间同步服务和构建时间同步服务器
  • 费高云调研党的建设工作:营造风清气正劲足的政治生态
  • 葡萄牙、西班牙突发大范围停电,交通和通信服务受到严重影响
  • 王星昊再胜连笑,夺得中国围棋天元赛冠军
  • 图像编辑新增一款开源模型,阶跃星辰发布Step1X-Edit
  • 又一名90后干部被查,已有多人倒在乡镇领导岗位上
  • 女儿被偷拍后,一个父亲的战斗