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 代码。

相关推荐
闪电麦坤9515 小时前
C/C++项目练习:命令行记账本
开发语言·c++
kyle~15 小时前
python---PyInstaller(将Python脚本打包为可执行文件)
开发语言·前端·python·qt
User:你的影子16 小时前
WPF ItemsControl 绑定
开发语言·前端·javascript
小程序设计16 小时前
【springboot+vue】高校迎新平台管理系统(源码+文档+调试+基础修改+答疑)
vue.js·spring boot·后端
野生的编程萌新16 小时前
【C++深学日志】从0开始的C++生活
c语言·开发语言·c++·算法
海梨花16 小时前
字节一面 面经(补充版)
jvm·redis·后端·面试·juc
野生程序员y16 小时前
深入解析Spring AOP核心原理
java·后端·spring
波波烤鸭17 小时前
Spring Boot 原理与性能优化实战
spring boot·后端·性能优化
shellvon17 小时前
从抓包到攻防:解锁API安全设计的秘密
后端·安全
言之。17 小时前
Django REST Framework响应类Response详解
后端·python·django