在 Go(Golang)语言中,方法(method)和函数(function)看起来很相似,但本质上有重要区别。我们来详细解释:
✅ 一、方法 vs 函数的区别
特征 | 函数(Function) | 方法(Method) |
---|---|---|
定义 | 普通的独立函数 | 绑定在某个类型上 |
语法 | func 函数名(...) | func (接收者 类型) 方法名(...) |
接收者 | 无 | 有一个接收者(可以是值或指针) |
调用方式 | 函数名() | 实例.方法名() |
场景 | 通用逻辑 | 面向对象操作,封装数据行为 |
✅ 二、直观对比示例
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35package main import "fmt" // 函数:独立存在 func sayHello(name string) { fmt.Println("Hello", name) } // 定义一个结构体 type Person struct { Name string } // 方法:属于 Person 类型 func (p Person) greet() { fmt.Println("Hi, I’m", p.Name) } // 指针接收者方法:可以修改 p 的内容 func (p *Person) rename(newName string) { p.Name = newName } func main() { // 调用函数 sayHello("Alice") // 使用方法 p := Person{Name: "Tom"} p.greet() // Hi, I'm Tom p.rename("Jerry") p.greet() // Hi, I'm Jerry }
✅ 三、关键点说明
1. 方法绑定接收者(值 or 指针)
复制代码
1
2func (p Person) greet() // 值接收者,不能修改原对象 func (p *Person) rename(...) // 指针接收者,可以修改对象字段
💡 如果你要修改结构体字段,必须用指针接收者。
2. 方法可用于接口定义
Go 接口定义的就是方法集合,函数则不适用。
复制代码
1
2
3type Greeter interface { greet() }
3. 函数可作为变量、传参
函数是一等公民,可以赋值给变量、作为参数传递。
复制代码
1
2f := sayHello f("World")
方法可以通过 变量.方法
的方式“转换成函数”。
✅ 四、应用场景总结
使用 | 场景 |
---|---|
函数 | 工具函数、逻辑计算、纯功能逻辑(如加法、时间格式化) |
方法 | 操作结构体数据、封装行为(面向对象风格) |
接口使用 | 只能使用方法(绑定类型) |
🎯 一句话总结:
函数是通用功能,方法是绑定结构的行为。Go 没有类,但方法+结构体就是 Go 的“面向对象”。
最后
以上就是热心网友最近收集整理的关于Go语言的方法和函数的区别和示例,温故而知新的全部内容,更多相关Go语言内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复