方法概念
方法 其实就是一个函数,在 func 这个关键字和方法名中间加入了一个特殊的接收器类型。接收器可以是结构体类型或者是非结构体类型。接收器是可以在方法的内部访问的。
方法创建
func (t 类型) 方法名(参数列表) 返回列表{
}
实例绑定
type Lesson struct {
Name string
Target string
}
// PrintInfo 定义一个与 Lesson 的绑定的方法
func (lesson Lesson) PrintInfo() {
fmt.Println("name:", lesson.Name)
fmt.Println("target:", lesson.Target)
}
func main() {
l := Lesson.Lesson{
Name: "从0到Go语言微服务架构师",
Target: "全面掌握Go语言微服务落地,代码级一次性解决微服务和分布式系统。",
}
l.PrintInfo()
}
在非结构体上的方法
不仅可以在结构体类型上定义方法,也可以在非结构体类型上定义方法,但是有一个问题。为了在一个类型上定义一个方法,方法的接收器类型定义和方法的定义应该在同一个包中。例如:
func (a myInt) add(b myInt) myInt {
return a + b
}
func main() {
var x myInt = 50
var y myInt = 7
fmt.Println(x.add(y)) // 57
}