MST
星途 面试题库

面试题:Go语言嵌入式结构体嵌套的方法继承与重写

在Go语言的嵌入式结构体嵌套中,如何实现类似面向对象语言中的方法继承与重写?请编写代码示例,展示父结构体的方法被继承以及子结构体重写父结构体方法的过程。
10.6万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

// 定义父结构体
type Parent struct {
}

// 父结构体的方法
func (p Parent) SayHello() {
    fmt.Println("Hello from Parent")
}

// 定义子结构体,嵌入父结构体
type Child struct {
    Parent
}

// 子结构体重写父结构体的方法
func (c Child) SayHello() {
    fmt.Println("Hello from Child")
}

可以通过以下方式调用:

func main() {
    p := Parent{}
    p.SayHello()

    c := Child{}
    c.SayHello()
    // 调用嵌入结构体的原始方法
    c.Parent.SayHello() 
}

在上述代码中:

  1. 定义了Parent结构体及其方法SayHello
  2. Child结构体嵌入了Parent结构体,从而继承了Parent的方法。
  3. Child结构体重写了SayHello方法,当通过Child实例调用SayHello时,会执行Child重写后的方法。
  4. main函数中,分别展示了父结构体和子结构体实例调用SayHello方法,同时还展示了通过子结构体实例调用嵌入结构体原始方法的方式。