Oop 戈朗,打电话给父母';方法
从下面的示例中,子对象是否可以调用父对象的方法?例如,我希望孩子(男孩1和女孩1)调用父母的“记住”方法;所以父母可以记住孩子希望他们记住的东西 多谢各位Oop 戈朗,打电话给父母';方法,oop,object,methods,go,Oop,Object,Methods,Go,从下面的示例中,子对象是否可以调用父对象的方法?例如,我希望孩子(男孩1和女孩1)调用父母的“记住”方法;所以父母可以记住孩子希望他们记住的东西 多谢各位 package main import "fmt" type child struct { Name string } func (p *child) Yell() { fmt.Println("Child's yelling") } type parent struct { Name string
package main
import "fmt"
type child struct {
Name string
}
func (p *child) Yell() {
fmt.Println("Child's yelling")
}
type parent struct {
Name string
Children []child
Memory []string
}
func (p *parent) Yell() {
fmt.Println("Parent's yelling")
}
func (p *parent) Remember(line string) {
p.Memory = append(p.Memory, line)
}
func main() {
p := parent{}
p.Name = "Jon"
boy1 := child{}
boy1.Name = "Jon's boy"
girl1 := child{}
girl1.Name = "Jon's girl"
p.Children = append(p.Children, boy1)
p.Children = append(p.Children, girl1)
fmt.Println(p)
p.Yell()
for i:=0;i<len(p.Children);i++ {
p.Children[i].Yell()
}
}
主程序包
输入“fmt”
类型子结构{
名称字符串
}
func(p*child)Yell(){
fmt.Println(“孩子的叫喊声”)
}
类型父结构{
名称字符串
孩子
内存[]字符串
}
func(p*父项)Yell(){
fmt.Println(“父母的喊叫”)
}
func(p*父项)记住(行字符串){
p、 内存=追加(p.内存,行)
}
func main(){
p:=父{}
p、 Name=“Jon”
男孩1:=孩子{}
男孩1.Name=“乔恩的男孩”
girl1:=子{}
girl1.Name=“乔恩的女孩”
p、 Children=append(p.Children,boy1)
p、 Children=append(p.Children,girl1)
fmt.Println(p)
p、 叫喊
对于i:=0;i可以在子结构中添加指向父结构的指针
type child struct {
Name string
parent *parent
}
func (p *child) Yell() {
fmt.Println("Child's yelling")
p.parent.Remember(p.Name + " called")
p.parent.Yell()
}
可以在子结构中添加指向父结构的指针
type child struct {
Name string
parent *parent
}
func (p *child) Yell() {
fmt.Println("Child's yelling")
p.parent.Remember(p.Name + " called")
p.parent.Yell()
}
我只是咕噜的开胃菜
似乎Golang约定适用于类名,当继承基类(“父类”)时,不应分配变量名。p.Parent
将自动工作,即如下所示:
type Child struct {
*Parent // put at top
Name string
}
func (p *Child) Yell() {
fmt.Println("Child's yelling")
p.Parent.Remember(p.Name + " called")
p.Parent.Yell()
}
参考:
其他一些示例使用非指针父对象继承,如:
type Child struct {
Parent // put at top
Name string
}
还不确定哪一个更正式、更方便,但我只是Golang的新手
似乎Golang约定适用于类名,当继承基类(“父类”)时,不应分配变量名。p.Parent
将自动工作,即如下所示:
type Child struct {
*Parent // put at top
Name string
}
func (p *Child) Yell() {
fmt.Println("Child's yelling")
p.Parent.Remember(p.Name + " called")
p.Parent.Yell()
}
参考:
其他一些示例使用非指针父对象继承,如:
type Child struct {
Parent // put at top
Name string
}
还不知道哪一个更正式、更方便,谢谢你。但是,如何使用memory()实现这一点呢方法?我得到了一个零指针错误。@Gon:你可以调用记住的方法,就像我在这里调用叫喊一样。如果指针为零,你还没有给父对象分配指针。谢谢。但是,如何使用记住()方法?我得到了一个零指针错误。@Gon:你可以调用记住,方法与我在这里调用叫喊完全相同。如果指针为零,你就没有给父对象分配指针。