加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
11.2-interfaces-poly.go 850 Bytes
一键复制 编辑 原始数据 按行查看 历史
Letotn 提交于 2023-01-05 23:24 . update practice 11.2
package main
import (
"fmt"
"math"
)
// a) 扩展 interfaces_poly.go 中的例子,添加一个 Circle 类型
// b) 使用一个抽象类型 Shape(没有字段) 实现同样的功能,它实现接口 Shaper,然后在其他类型里内嵌此类型。扩展 10.6.5 中的例子来说明覆写。
type Shaper interface {
Area() float32
}
type Square struct {
side float32
}
func (s Square) Area() float32 {
return s.side * s.side
}
type Rectangle struct {
x, y float32
}
func (r Rectangle) Area() float32 {
return r.x * r.y
}
type Circle struct {
r float32
}
func (c Circle) Area() float32 {
return math.Pi * c.r * c.r
}
func main() {
s := Square{5}
r := Rectangle{4, 7}
c := Circle{6.0}
shapers := []Shaper{s, r, c}
for _, shape := range shapers {
fmt.Println("shape struct(", shape, ") Area(): ", shape.Area())
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化