现在版本的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() }
原文:https://www.cnblogs.com/evoc/p/14553047.html