Go語言中沒有面向對象編程中的繼承概念,但可以通過結構體嵌套和組合的方式來實現類似的效果。
可以通過在一個結構體中嵌入另一個結構體來實現繼承的效果。子結構體可以訪問父結構體中的字段和方法。
下面是一個簡單的例子:
package main
import "fmt"
// 父結構體
type Parent struct {
name string
age int
}
// 父結構體方法
func (p *Parent) sayHello() {
fmt.Println("Hello, I'm", p.name)
}
// 子結構體
type Child struct {
Parent // 嵌入父結構體
school string
}
// 子結構體方法
func (c *Child) goToSchool() {
fmt.Println(c.name, "is going to", c.school)
}
func main() {
// 創建子結構體對象
child := Child{
Parent: Parent{
name: "Tom",
age: 10,
},
school: "ABC School",
}
// 訪問父結構體字段和方法
fmt.Println(child.name) // 輸出:Tom
fmt.Println(child.age) // 輸出:10
child.sayHello() // 輸出:Hello, I'm Tom
// 訪問子結構體字段和方法
fmt.Println(child.school) // 輸出:ABC School
child.goToSchool() // 輸出:Tom is going to ABC School
}
在上面的例子中,我們定義了一個父結構體Parent
,包含了一個字段name
和一個方法sayHello
。然后定義了一個子結構體Child
,通過嵌入父結構體來實現繼承。子結構體還定義了一個自己的字段school
和方法goToSchool
。
在main
函數中,我們創建了一個子結構體對象child
,然后可以通過對象訪問父結構體的字段和方法,也可以訪問子結構體自己的字段和方法。