理解interface三点足够:
1.方法的集合
2.任何类型的对象实现该接口全部方法,则表明该类型实现了该接口。
3.作为一种数据类型,实现了该接口的任何对象都可以给对应的接口类型变量赋值
结合例子去理解上述三点:
示例1:
import “fmt”
import “math”
type geometry interface {
area() float64
perim() float64
}
type rect struct {
width, height float64
}
func (r rect) area() float64 {
return r.width * r.height
}
func (r rect) perim() float64 {
return 2*r.width + 2*r.height
}
func measure(g geometry) {
fmt.Println(g)
fmt.Println(g.area())
fmt.Println(g.perim())
}
func main() {
r := rect{width: 3, height: 4}
measure(r)
}
示例2:
import “fmt”
type I interface {
method1()
}
type T struct{}
func (T) method1() {}
func main() {
var i I = T{}
fmt.Println(i)
}
示例3:
import ( “fmt” )
func PrintAll(vals []interface{}) {
for _, val := range vals {
fmt.Println(val)
}
}
func main() {
names := []string{“stanley”, “david”, “oscar”}
vals := make([]interface{}, len(names))
for i, v := range names {
vals[i] = v
}
PrintAll(vals)
}
更多内容请关注每日编程,每天进步一点。