[GO]方法的重写

package main

import "fmt"

type Person struct {
    name string
    sex byte
    age int
}

func (tmp Person) PrintInfo ()  {
    fmt.Println("Person printinfo = ", tmp)
}

type Student struct {
    Person
    id int
    addr string
}

func (tmp Student) PrintInfo ()  {
    fmt.Println("Student printinfo = ", tmp)
}

func main() {
    s := Student{Person:Person{"mike", 'm', 18}}//student继承person,那么它有person的printinfo方法,但当它自己也有了printinfo方法后,则自己的生效
    //自己的找不到才会去找person里的方法
   s.PrintInfo()
   //如果就是想调用Person里的printinfo方法,那么则可以使用显示调用
  
s.Person.PrintInfo()

}

执行结果

Student printinfo =  {{mike 109 18} 0 }
Person printinfo =  {mike 109 18}
原文地址:https://www.cnblogs.com/baylorqu/p/9637443.html