Java是面向对象的语言( Object Oriented Language),Go是如何实现面向对象的呢?
使用struct来实现OOP。
Go有两种方式来实现。
1.Struct指针方法
package main
import (
"fmt"
)
type Employee struct{
id string
name string
}
func(e *Employee) SetName(name string) {
e.name = name
}
func main() {
emp1 := &Employee{
id: "E1",
name: "Shashank",
}
emp1.SetName("Vivek")
fmt.Println(emp1.name)
}
Vivek
2.Struct值方法
package main
import (
"fmt"
)
type Employee struct{
id string
name string
}
func(e Employee) SetName(name string) { // removed * in this line
e.name = name
}
func main() {
emp1 := &Employee{
id: "E1",
name: "Shashank",
}
emp1.SetName("Vivek")
fmt.Println(emp1.name)
}
Shashank
pointer是指向内存地址的值。因此,引用的任何变化改变值在Pointer Method里。
这意味着为了创建一个immutable对象,我们应该使用Value Method,它不改变对象。我们返回变量的新的拷贝,使得它immutable。然而,我们想要改变变量自己,则应该选用Pointer Method。