企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
### 实例 ~~~ type Person struct { name string age int gender byte } //实现一个方法 func (p *Person) PrintInfo() { fmt.Printf("name= %s,age=%d,gender=%c\n", p.name, p.age, p.gender) } //有个学生,继承自Person字段,成员和方法都继承了 type Student struct { Person id int addr string } func (s *Student) PrintInfo() { fmt.Println("我是重写方法") } func main() { s := Student{Person{"jack", 20, 'm'}, 1, "北京"} s.Person.PrintInfo() s.PrintInfo() } ~~~ ~~~ name = jack,age = 20,gender = m 我是重写方法 ~~~ ### 方法的就近原则 就近原则,先找本作用域的方法,如果找不到再用继承的方法 ~~~ type Person struct { name string age int gender byte } //实现一个方法 func (p *Person) PrintInfo() { fmt.Printf("name= %s,age=%d,gender=%c\n", p.name, p.age, p.gender) } //有个学生,继承自Person字段,成员和方法都继承了 type Student struct { Person id int addr string } //func (s *Student) PrintInfo() { // fmt.Println("我是重写方法") //} func main() { s := Student{Person{"jack", 20, 'm'}, 1, "北京"} s.Person.PrintInfo() s.PrintInfo() } ~~~ ~~~ name= jack,age=20,gender=m name= jack,age=20,gender=m ~~~