当前位置 博文首页 > 莫忘输赢的博客:Go-一个定义类及继承此类的例子

    莫忘输赢的博客:Go-一个定义类及继承此类的例子

    作者:[db:作者] 时间:2021-07-25 12:18

    1、代码

    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()
    }
    

    2、输出

    cs