Go-22-方法
方法
Go语言同时有函数和方法,方法的本质是函数,但是方法和函数又有所不同。
函数(function)是一段具有独立功能的代码,可以被反复多次调用,从而实现代码复用。
方法(method)是一个类的行为功能,只有该类的对象才能调用。
定义:
func(接收者 接收者类型)方法名(参数列表)(返回值列表){ // 方法体 }
接受者中的变量在命名时,官方建议使用接受者类型的第一个小写字母。
package main import "fmt" type Flowers struct { name string color string } func main() { f1:=Flowers{"红玫瑰","红"} f1.printFlower() printFlower(f1) } //方法 func (f Flowers) printFlower() { fmt.Println(f) } //函数 func printFlower(f Flowers){ fmt.Println(f) }
使用方法的原因:
- Go不是一种纯粹面向对象的编程语言,它不支持类。因此其方法旨在实现类似于类的行为。
- 相同名称的方法可以在不同的类型上定义,而具有相同名称的函数是不允许的。
方法的继承
方法是可以继承的,如果匿名字段实现了一个方法,那么包含这个匿名字段的struct也能调用该匿名字段中的方法。
package main import "fmt" // 方法的继承 type Human struct { name string age int } type Students struct { Human //匿名对象 class string } type Teachers struct { Human// 匿名对象 address string } func main() { s:=Students{Human{"xiaoming",18}, "Senior one"} s.print() } func (h *Human)print() { fmt.Println(h) }
方法的重写
在Go语言中,方法重写是指一个包含了匿名字段的struct也实现了该匿名字段实现的方法。
package main import "fmt" // 方法的继承 type Human struct { name string age int } type Students struct { Human //匿名对象 class string } type Teachers struct { Human// 匿名对象 address string } func main() { s:=Students{Human{"xiaoming",18}, "Senior one"} s.print() } func (h *Human)print() { fmt.Println(h) } func (s *Students) print(){ fmt.Println(s) }
不要小瞧女程序员
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具