在golang的继承方法中使对象可访问
Make object accessible in inherited method in golang
我正在尝试在 golang 中实现继承。
下面是示例:
type A struct {
Number int
}
type B struct{
A
name String
}
func (a A) GetNumber() {
// Here I want to use instance of B
fmt.Println(a) // but this is giving me instance of A
}
如果 A 被 B 继承,是否可以在 A 的函数中获取 B 的实例?
首先,您的代码有错误。在您没有创建定义为 String
的另一个类型之前,您必须将其更正为 string
.
然后在 Go 中你可以使用复合结构,这意味着你可以直接访问包含在另一个结构中的结构字段,就像你已经做的那样。
这意味着您可以在声明了结构字段的方法接收器上调用方法。要更正您的示例,如果我正确理解您的问题:
package main
import (
"fmt"
)
type A struct {
Number int
}
type B struct{
A
name string
}
func main() {
b := &B{A{1}, "George"}
b.GetValues()
}
func (b B) GetValues() {
fmt.Println(b.Number)
fmt.Println(b.name)
}
在下面的示例中,因为 struct A
包含在 struct B
中,这意味着您可以在 GetValues 方法中调用在 struct A
中声明的结构字段。这是因为 struct B
继承了 struct A
字段。
我正在尝试在 golang 中实现继承。 下面是示例:
type A struct {
Number int
}
type B struct{
A
name String
}
func (a A) GetNumber() {
// Here I want to use instance of B
fmt.Println(a) // but this is giving me instance of A
}
如果 A 被 B 继承,是否可以在 A 的函数中获取 B 的实例?
首先,您的代码有错误。在您没有创建定义为 String
的另一个类型之前,您必须将其更正为 string
.
然后在 Go 中你可以使用复合结构,这意味着你可以直接访问包含在另一个结构中的结构字段,就像你已经做的那样。
这意味着您可以在声明了结构字段的方法接收器上调用方法。要更正您的示例,如果我正确理解您的问题:
package main
import (
"fmt"
)
type A struct {
Number int
}
type B struct{
A
name string
}
func main() {
b := &B{A{1}, "George"}
b.GetValues()
}
func (b B) GetValues() {
fmt.Println(b.Number)
fmt.Println(b.name)
}
在下面的示例中,因为 struct A
包含在 struct B
中,这意味着您可以在 GetValues 方法中调用在 struct A
中声明的结构字段。这是因为 struct B
继承了 struct A
字段。