面向对象的封装
package main
import "fmt"
type Hero struct {
Name string
Ad int
Level int
}
func (this Hero) Show(){
fmt.Println("Name = ", this.Name)
fmt.Println("Ad = ", this.Ad)
fmt.Println("Level = ", this.Level)
}
func (this Hero) GetName() string {
return this.Name
}
func (this Hero) SetName(newName string) {
//this 是调用该方法的对象的一个副本
this.Name = newName
}
func main() {
//创建一个对象
hero := Hero{Name: "zhang3",Ad: 100,Level:1}
hero.Show()
hero.SetName("Li4")
fmt.Println("------------修改后------------")
hero.Show()
}
可以看出修改后,li4,数据并没有变化
如果加入指针,进行li4的修改后,数据会发生变化
package main
import "fmt"
type Hero struct {
Name string
Ad int
Level int
}
func (this *Hero) Show(){
fmt.Println("Name = ", this.Name)
fmt.Println("Ad = ", this.Ad)
fmt.Println("Level = ", this.Level)
}
func (this *Hero) GetName() string {
return this.Name
}
func (this *Hero) SetName(newName string) {
//this 是调用该方法的对象的一个副本
this.Name = newName
}
func main() {
//创建一个对象
hero := Hero{Name: "zhang3",Ad: 100,Level:1}
hero.Show()
hero.SetName("Li4")
fmt.Println("------------修改后------------")
hero.Show()
}
- 如果首字母大写,表示其他包也能够访问
- 如果类的属性首字母大写,表示该属性对外是能够访问的,否则的话,只能类的内部访问。