searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Go语言接口的意义

2023-11-07 09:05:16
5
0

接口-面向对象编程的思想-实现多态性

在 Go 语言中,接口通过其灵活的特性,实现了多态性。多态性是面向对象编程中的一个重要概念,它允许不同类型的对象对相同的消息做出响应,从而提高了代码的灵活性和可复用性。

在 Go 语言中,多态性是通过接口的方式来实现的。具体来说,一个对象只要实现了接口规定的方法,即可被看作是该接口类型的实例,从而可以赋值给该接口类型的变量。这样一来,不同的具体类型可以以统一的接口类型进行操作,从而实现了多态性。

 

package main

import (
	"fmt"
)

// 定义一个接口
type Shape interface {
	Area() float64
}

// 定义矩形类型
type Rectangle struct {
	Width  float64
	Height float64
}

// 矩形类型实现了 Shape 接口的 Area 方法
func (r Rectangle) Area() float64 {
	return r.Width * r.Height
}

// 定义圆形类型
type Circle struct {
	Radius float64
}

// 圆形类型实现了 Shape 接口的 Area 方法
func (c Circle) Area() float64 {
	return 3.14 * c.Radius * c.Radius
}

func main() {
	// 创建一个 Shape 类型的切片
	shapes := []Shape{
		Rectangle{Width: 3, Height: 4},
		Circle{Radius: 5},
	}

	// 遍历切片,计算每个图形的面积
	for _, shape := range shapes {
		fmt.Println("面积:", shape.Area())
	}
}

在上面的示例中,我们定义了一个 Shape 接口,该接口规定了一个 Area 方法。然后我们创建了 RectangleCircle 两种具体的类型,并让它们分别实现了 Shape 接口的 Area 方法。最后,在 main 函数中,我们创建了一个 Shape 类型的切片,将具体的 RectangleCircle 对象存储其中,并通过统一的接口类型调用 Area 方法来计算不同图形的面积。

这样,即使 RectangleCircle 是不同的具体类型,但它们都可以以统一的 Shape 接口类型进行操作,实现了多态特性。

0条评论
0 / 1000
l****n
28文章数
5粉丝数
l****n
28 文章 | 5 粉丝
原创

Go语言接口的意义

2023-11-07 09:05:16
5
0

接口-面向对象编程的思想-实现多态性

在 Go 语言中,接口通过其灵活的特性,实现了多态性。多态性是面向对象编程中的一个重要概念,它允许不同类型的对象对相同的消息做出响应,从而提高了代码的灵活性和可复用性。

在 Go 语言中,多态性是通过接口的方式来实现的。具体来说,一个对象只要实现了接口规定的方法,即可被看作是该接口类型的实例,从而可以赋值给该接口类型的变量。这样一来,不同的具体类型可以以统一的接口类型进行操作,从而实现了多态性。

 

package main

import (
	"fmt"
)

// 定义一个接口
type Shape interface {
	Area() float64
}

// 定义矩形类型
type Rectangle struct {
	Width  float64
	Height float64
}

// 矩形类型实现了 Shape 接口的 Area 方法
func (r Rectangle) Area() float64 {
	return r.Width * r.Height
}

// 定义圆形类型
type Circle struct {
	Radius float64
}

// 圆形类型实现了 Shape 接口的 Area 方法
func (c Circle) Area() float64 {
	return 3.14 * c.Radius * c.Radius
}

func main() {
	// 创建一个 Shape 类型的切片
	shapes := []Shape{
		Rectangle{Width: 3, Height: 4},
		Circle{Radius: 5},
	}

	// 遍历切片,计算每个图形的面积
	for _, shape := range shapes {
		fmt.Println("面积:", shape.Area())
	}
}

在上面的示例中,我们定义了一个 Shape 接口,该接口规定了一个 Area 方法。然后我们创建了 RectangleCircle 两种具体的类型,并让它们分别实现了 Shape 接口的 Area 方法。最后,在 main 函数中,我们创建了一个 Shape 类型的切片,将具体的 RectangleCircle 对象存储其中,并通过统一的接口类型调用 Area 方法来计算不同图形的面积。

这样,即使 RectangleCircle 是不同的具体类型,但它们都可以以统一的 Shape 接口类型进行操作,实现了多态特性。

文章来自个人专栏
AI-llama大模型,go语言开发
28 文章 | 2 订阅
0条评论
0 / 1000
请输入你的评论
0
0