一個面向對象的程序會用方法來表達其屬性和對應的操作,這樣使用這個對象的用戶就不需要直接去操作對象,而是借助方法來做這些事情。
在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
}
~~~