golang 函数和方法的区别
一句话总结就是,func直接函数名就是函数,否则就是方法.
至于是谁的的方法,看函数前面有没有*号的指向.
golang中函数第一等公民,所以以函数优先.
demo\main.go
package main
import "fmt"
// 定义一个结构体
type Student struct {
name string
age int
}
// 定义一个函数,用于打印学生信息,它不依赖于特定的 Student 类型实例
func printStudentInfo(s Student) {
fmt.Printf("学生姓名:%s,年龄:%d\n", s.name, s.age)
}
// 定义一个方法,用于修改学生的年龄,它与 Student 类型关联
// ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
// func直接函数名就是函数,否则就是方法
func (s *Student) setAge(newAge int) {
s.age = newAge
}
func main() {
// 创建一个 Student 实例
stu := Student{name: "Alice", age: 20}
// 调用函数
printStudentInfo(stu)
// 调用方法
stu.setAge(21)
printStudentInfo(stu)
}
demo\main_test.go
package main
import "testing"
func TestMain(t *testing.T) {
t.Run("testMain", func(t *testing.T) {
main()
})
}
浙公网安备 33010602011771号