接口指定了一个方法集,这是实现模块化的强大方式,可以把接口视为方法集的蓝本,描述了方法集中的所有方法,只是没有具体实现它们。

接口描述了方法集中的所有方法,并指定了每个方法的函数签名。例如定义一个长方形,需要求解周长。

type cfxint interface {
cc() int
}

接口定义了一个方法cc。cc就是函数的签名,里面包含2个参数,返回一个int类型。实现接口就是把方法体实现了。

type Cfx struct {
width int
height int
}
func (c *Cfx) cc() int {
return 2*c.width+2*c.height
}

上面已经实现了接口中的方法,那如何使用呢?

func xx( xf cxfint) int{
return xf.cc()
}

整体程序如下

import "fmt"

type cfxint interface {
cc() int
}
type Cfx struct {
width int
height int
}
func (c *Cfx) cc() int {
return 2*c.width+2*c.height
}
func xx( xf cfxint) int{
return xf.cc()
}
func main() {
va := Cfx {
width:2,
height:4,
}
result := xx(&va)
fmt.Println(result)
}