在go语言中,可以给任意自定义类型添加方法
1>面向过程与面向对象的区别
package main
import "fmt"
// 面向过程
func Add01(a, b int) int {
return a + b
}
// 面向方法
type long int
// 方法的定义: func (变量 类型) 方法名 (参数 类型) 返回值 {}
// 其中 (变量 类型) 又叫接收者,就是这份类型的变量绑定了这个方法
// 也就是说,只要变量是long类型的,那么这个变量就具有Add02这个方法
func (temp long) Add02(other long) long {
return temp + other
}
func main() {
res := Add01(2, 3)
fmt.Println(res)
var a long = 3
r := a.Add02(3)
fmt.Println(r)
}
// 面向对象只是换了一种表现形式,本质上是一样的
2>给结构体类型绑定方法
package main
import "fmt"
type Person struct {
name string
sex string
age int
}
// 带有接收者的函数叫方法
func (tmp Person) printInfo() {
fmt.Println(tmp)
}
func main() {
per := Person{"yoyo", "f", 22}
per.printInfo()
}