当前位置 博文首页 > 莫忘输赢的博客:Go-一个定义类及继承此类的例子
package main
import "fmt"
type Person struct {
name string
sex string
age int
}
/*
创建此方法默认会创建 func (s Person) getName() string{}
*/
func (s *Person) getName() string {
return s.name
}
func (s *Person) setName(newName string) {
s.name = newName
}
func (s *Person) getSex() string {
return s.sex
}
func (s *Person) setSex(newSex string) {
s.sex = newSex
}
func (s *Person) getAge() int {
return s.age
}
func (s *Person) setAge(newAge int) {
s.age = newAge
}
//用于之后的printf的输出
func (s Person) String() string {
x := "name:" + s.name + " sex:" + s.sex + " age:" + fmt.Sprintf("%d", s.age)
return x
}
//超人
type SuperPerson struct {
Person //伪继承
}
func (s *SuperPerson) fly() {
x := "name:" + s.name + " fly!"
fmt.Println(x)
}
//
func main() {
fmt.Println("普通人开始表演....")
var p = new(Person)
p.setName("xxx")
p.setSex("xxx")
p.setAge(1)
fmt.Println((*p))
//s := fmt.Sprintf("%v", p)
//fmt.Println(s)
fmt.Println("getname:", p.getName())
fmt.Println("getSex:", p.getSex())
fmt.Println("getAge:", p.getAge())
fmt.Println("超人开始表演....")
var sp = new(SuperPerson)
sp.setName("sx")
sp.setSex("sx")
sp.setAge(10000)
fmt.Println((*sp))
sp.fly()
}