详解Go语言中方法与函数的异同
在Go中,方法与类型相关,通过类型名.方法名调用,可修改接收者值;而函数独立于类型,直接通过函数名调用。方法与函数的区别:方法与类型相关,函数独立于类型。方法通过类型名.方法名调用,函数直接通过函数名调用。方法可修改接收者值,函数不可。
在 Go 中,方法与类型相关,通过类型名.方法名调用,可修改接收者值;而函数独立于类型,直接通过函数名调用。方法与函数的区别:方法与类型相关,函数独立于类型。方法通过类型名.方法名调用,函数直接通过函数名调用。方法可修改接收者值,函数不可。

Go语言中的方法与函数
背景
在Go语言中,方法和函数都是代码块,用于执行特定任务。但是,它们之间存在着一些关键的区别。
方法
方法与特定类型相关。它们是该类型的值的成员,因此可以使用类型名后跟点号来调用。
type Person struct {
name string
}
func (p Person) Greet() {
fmt.Println("Hello, my name is", p.name)
}在上面的示例中,Greet是Person类型的方法,它可以通过p.Greet()调用。
函数
函数是独立于类型的代码块。它们使用func关键字定义,并可以通过其函数名称直接调用。
func Greet(name string) {
fmt.Println("Hello,", name)
}在上面的示例中,Greet是一个函数,它通过Greet("John")调用,其中"John"是作为参数传递的。
异同
| 特征 | 方法 | 函数 |
|---|---|---|
| 关联类型 | 与特定类型相关 | 与类型无关 |
| 调用语法 | 类型名.方法名 | 函数名 |
| 访问接收者 | 可以通过this或*this访问类型的值 | 不可访问 |
实战案例
场景: 编写程序管理学生记录。
实现:
type Student struct {
name string
age int
}
func (s *Student) GetName() string {
return s.name
}
func (s *Student) SetName(name string) {
s.name = name
}
func main() {
student := &Student{"John", 20}
fmt.Println(student.GetName()) // 输出:"John"
student.SetName("Jane")
fmt.Println(student.GetName()) // 输出:"Jane"
}在这个示例中,Student类型有一个GetName方法,用于检索学生的名字,和一个SetName方法,用于设置学生的名字。通过使用指针接收器(*Student),方法可以修改接收者值。
函数main创建了一个Student类型的结构,并使用其方法来管理学生的数据。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















