🏆个人专栏
🤺 leetcode
🧗 Leetcode Prime
🏇 Golang20天教程
🚴♂️ Java问题收集园地
🌴 成长感悟
欢迎大家观看,不执着于追求顶峰,只享受探索过程
Golang 开发实战day13 - 接收者函数
Golang 接收者函数是方法的另一种打开方式
在 Golang 中,方法是与结构体或接口相关联的一组函数。通常情况下,我们使用 func (receiver TypeName) methodName(parameters) 格式来定义方法,其中 receiver 是方法接收者,用于指定方法作用于哪种类型的数据。
接收者函数为我们提供了一种更灵活的定义方法的方式。它允许我们直接将方法定义在结构体或接口类型上,而无需使用 func 关键字。这使得代码更加简洁易读,也更加符合面向对象的编程理念。
1. 接收者函数的语法:
func (receiver TypeName) methodName(parameters) {
// 方法体
}
其中:
- receiver 是方法接收者,用于指定方法作用于哪种类型的数据。
- TypeName 是接收者类型的名称。
- methodName 是方法名称。
- parameters 是方法参数列表。
- 方法体 是方法的具体实现代码。
2. 接收者函数的优点
- 简洁易读: 接收者函数可以直接定义在结构体或接口类型上,代码更加简洁易读。
- 符合面向对象的编程理念: 接收者函数更加符合面向对象的编程理念,方法直接与数据类型关联,提高了代码的可维护性。
- 方法链式调用: 接收者函数支持方法链式调用,使代码更加优雅。
3. 示例
项目中创建两个go文件,main.go, bill.go
3.1 main.go
func main() {
mybill := newBill("哆啦A梦的账单")
fmt.Println(mybill.format())
}
3.2 bill.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 代码。