首页 > 解决方案 > 使用接口时将结构传递给函数?

问题描述

我有下面的代码,来自 Go by Example。除了一个关键部分,我什么都懂:如果 measure 采用几何类型的东西,我怎么能创建一个矩形并将其传递进去?

package main

import "fmt"

type geometry interface {
    area() float64
}

type rect struct {
    width, height float64
}

func main() {
    r := rect{width: 10, height: 10}
    measure(r)
}

func measure(g geometry) {
    fmt.Println(g)
    fmt.Println(g.area())
}

func (r rect) area() float64 {
    return r.width * r.height
}

标签: go

解决方案


这是因为rect实现geometry. 在 Go 中实现接口意味着类型实现了它的方法。由于rect有一个area方法,它满足接口geometry,因为这是唯一的要求。


推荐阅读