现在版本的golang中没有class关键字。golang沿用了标准c对类的模拟,或者c++编译器中对OOP的实现:基于结构体struct实现了类的机制。
package main
import "fmt"
//如果类名首字母大写,表示其他包也能够访问
type Hero struct
{
//如果说类的属性首字母大写, 表示该属性是对外能够访问的,否则的话只能够类的内部访问
Name string
Ad int
level int
}
// hero.Show()方法
func (this *Hero) Show()
{
fmt.Println("Name = ", this.Name)
fmt.Println("Ad = ", this.Ad)
fmt.Println("Level = ", this.level)
}
// hero.GetName()方法
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}
hero.Show()
hero.SetName("li4")
hero.Show()
}