Golang 开发实战day13 - Reciver Functions

🏆个人专栏

🤺 leetcode

🧗 Leetcode Prime

🏇 Golang20天教程

🚴‍♂️ Java问题收集园地

🌴 成长感悟

欢迎大家观看,不执着于追求顶峰,只享受探索过程

Golang 开发实战day13 - 接收者函数

  Golang 接收者函数是方法的另一种打开方式

  在 Golang 中,方法是与结构体或接口相关联的一组函数。通常情况下,我们使用 func (receiver TypeName) methodName(parameters) 格式来定义方法,其中 receiver 是方法接收者,用于指定方法作用于哪种类型的数据。

  接收者函数为我们提供了一种更灵活的定义方法的方式。它允许我们直接将方法定义在结构体或接口类型上,而无需使用 func 关键字。这使得代码更加简洁易读,也更加符合面向对象的编程理念。

1. 接收者函数的语法:

go 复制代码
func (receiver TypeName) methodName(parameters) {
    // 方法体
}

其中:

  • receiver 是方法接收者,用于指定方法作用于哪种类型的数据。
  • TypeName 是接收者类型的名称。
  • methodName 是方法名称。
  • parameters 是方法参数列表。
  • 方法体 是方法的具体实现代码。

2. 接收者函数的优点

  • 简洁易读: 接收者函数可以直接定义在结构体或接口类型上,代码更加简洁易读。
  • 符合面向对象的编程理念: 接收者函数更加符合面向对象的编程理念,方法直接与数据类型关联,提高了代码的可维护性。
  • 方法链式调用: 接收者函数支持方法链式调用,使代码更加优雅。

3. 示例

  项目中创建两个go文件,main.go, bill.go

3.1 main.go

go 复制代码
func main() {

	mybill := newBill("哆啦A梦的账单")

	fmt.Println(mybill.format())
}

3.2 bill.go

go 复制代码
// 定义一个bill结构
type bill struct {
	name  string
	items map[string]float64
	tip   float64
}

// 定义一个账单方法
func newBill(name string) bill {
	b := bill{
		name:  name,
		items: map[string]float64{"铜锣烧": 10.99, "提拉米苏": 30.99},
		tip:   0,
	}

	return b
}

// 整理输出
func (b bill) format() string {
	fs := "账单明细: \n"
	var total float64 = 0

	// list items
	for k, v := range b.items {
		fs += fmt.Sprintf("%v ...$%v \n", k+":", v)
		total += v
	}

	// total
	fs += fmt.Sprintf("%v ...$%0.2f", "总金额:", total)

	return fs
}

3.3 输出

  这回的输出有些不一样,直接在命令行中运行

4. 总结:

  接收者函数是 Golang 中一种强大的工具,可以让我们更灵活地定义方法,提高代码的简洁性和可维护性。理解和掌握接收者函数的使用技巧,可以帮助你写出更加优雅、高效的 Golang 代码。

相关推荐
IT_陈寒7 分钟前
Redis的SETNX并发问题让我加了三天班
前端·人工智能·后端
demo007x22 分钟前
Docling 文档转换以及技术架构分析
前端·后端·程序员
袋鱼不重2 小时前
我的神奇同事,AI 用多了居然写了个 Open In Codex
前端·后端·ai编程
用户8356290780512 小时前
使用 Python 操作 Word 内容控件
后端·python
像我这样帅的人丶你还2 小时前
啥? 前端也要会干Java?🛵🛵🛵
后端
Hommy882 小时前
【剪映小助手】添加贴纸接口(Add Sticker)
后端·github·剪映小助手·视频剪辑自动化·剪映api
LDR0062 小时前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术2 小时前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园2 小时前
C++20 Modules 模块详解
java·开发语言·spring
CaffeinePro3 小时前
FastAPI响应处理:返回值、状态码、响应头与异常标准化与案例解析
后端