一个面向对象的程序会用方法来表达其属性和对应的操作,这样使用这个对象的用户就不需要直接去操作对象,而是借助方法来做这些事情。
在Go语言中,可以给任意自定义类型(包括内置类型,但不包括指针类型)添加相应的方法。
~~~
package main
import "fmt"
type myInt int // 给 int 起一个别名
func (a myInt) Add(b myInt) myInt { // 面相对象
return a + b
}
func Add(a, b myInt) myInt { //面向过程
return a + b
}
func main() {
var a myInt = 1
var b myInt = 1
//调用func (a MyInt) Add(b MyInt)
fmt.Println("a.Add(b) = ", a.Add(b)) //a.Add(b) = 2
//调用func Add(a, b MyInt)
fmt.Println("Add(a, b) = ", Add(a, b)) //Add(a, b) = 2
}
~~~
~~~
package main
import "fmt"
type Person struct {
id int
name string
}
func (p Person) getPerson() {
fmt.Printf("id = %d, name = %s", p.id, p.name)
}
func main() {
p := Person{1, "Bob"}
p.getPerson() // id = 1, name = Bob
}
~~~