结构体(Struct)
- 一、GO+ 概述
- 二、定义
- 三、定义结构体
- 四、完整代码实例
官方线上GO+练习环境:https://play.goplus.org/
一、GO+ 概述
Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低的编程语言。
前面的文章已经介绍了 Go+ 如何定义结构体方法,熟悉 Go+ 的小伙伴都知道接口是方法签名的命名集合。学会接口是非常必要的,接下来我们就来了解一下这部分的一些内容
二、定义
首先,我们定义一个非常简单的关于几何图形的接口,包含两个最基本的接口方法——计算面积和计算周长,代码如下:
type geometry interface {
area() float64
perim() float64
}
三、定义结构体
接下来,我们定义两个结构体,分别是矩形结构体和圆形结构体,具体代码如下
type rect struct {
width float64,
height float64
}
type circle struct {
radius float64
}
然后分别实现上面定义的接口方法,矩形结构体相关代码如下:
func (c circle) area() float64 {
return math.Pi * c.radius * c.radius
}
func (c circle) perim() float64 {
return 2 * math.Pi * c.radius
}
四、完整代码实例
现在通过一段完整的代码实例来了解一下接口是如何被实际使用的,代码如下:
import (
"math"
)
type geometry interface {
area() float64
perim() float64
}
type rect struct {
width float64
height float64
}
type circle struct {
radius float64
}
func (r rect) area() float64 {
return r.width * r.height
}
func (r rect) perim() float64 {
return 2*(r.width + r.height)
}
func (c circle) area() float64 {
return math.Pi * c.radius * c.radius
}
func (c circle) perim() float64 {
return 2 * math.Pi * c.radius
}
func measure(g geometry) {
println(g)
println("面积:", g.area())
println("周长:", g.perim())
}
r := rect{width: 6, height: 9}
c := circle{radius: 2}
measure(r)
measure(c)
执行结果:
{6 9}
面积: 54
周长: 30
{2}
面积: 12.566370614359172
周长: 12.566370614359172