MST

星途 面试题库

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

定义一个基础结构体 `Shape` 包含计算面积的方法 `Area()`。然后通过组合的方式定义 `Rectangle` 结构体和 `Circle` 结构体,分别重写 `Area()` 方法来计算矩形和圆形的面积。请编写完整代码,并在 `main` 函数中创建 `Rectangle` 和 `Circle` 的实例,调用它们的 `Area()` 方法并打印结果。注意合理使用接口来实现多态。
47.1万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
    "math"
)

// Shape 基础结构体,包含计算面积的方法
type Shape interface {
    Area() float64
}

// Rectangle 结构体,通过组合实现 Shape 接口
type Rectangle struct {
    Width  float64
    Height float64
}

// Area 计算矩形面积
func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

// Circle 结构体,通过组合实现 Shape 接口
type Circle struct {
    Radius float64
}

// Area 计算圆形面积
func (c Circle) Area() float64 {
    return math.Pi * c.Radius * c.Radius
}

func main() {
    // 创建 Rectangle 实例
    rectangle := Rectangle{Width: 5, Height: 3}
    // 创建 Circle 实例
    circle := Circle{Radius: 4}

    // 调用 Area 方法并打印结果
    fmt.Printf("Rectangle Area: %.2f\n", rectangle.Area())
    fmt.Printf("Circle Area: %.2f\n", circle.Area())
}