ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
> # 简单使用 - 接口(interface)是一种抽象类型,它定义了一组方法的集合,但并不提供这些方法的实现。一个类型只要实现了接口中定义的所有方法,就被认为是实现了该接口。 - 空接口是没有任何方法的接口,它可以表示任意类型。 - 接口是一个抽象的类型,定义应该具有哪些方法,不用具体实现 - [详解Go 接口的作用](https://www.cnblogs.com/jiaojiner/p/15236644.html "发布于 2021-10-18 17:27") ``` //接口是方法签名的集合(方法签名就是定义为:方法名+参数列表) package main import "fmt" //几何体的接口。 type geometry interface { area() int64 perimeter() int64 } type square struct { longside int64 } type rectangle struct { width, height int64 } //正方形实现几何体接口 //只要某个类型拥有该接口的所有方法签名,即算实现该接口 //任何其他类型都实现了空接口 func (s square) area() int64 { return s.longside * s.longside } func (s square) perimeter() int64 { return s.longside * 4 } func (r rectangle) area() int64 { return r.width * r.height } func (r rectangle) perimeter() int64 { return (r.width + r.height) * 2 } //如果一个变量是接口类型, 可以通过这个变量调用接口里的方法 //一个函数把interface{}作为参数,那么他可以接受任意类型的值作为参数,如果一个函数返回interface{},那么也就可以返回任意类型的值 func test(g geometry) { fmt.Println(g) fmt.Printf("面积是%d,周长是%d\n", g.area(), g.perimeter()) } func main() { s := square{longside: 5} r := rectangle{width: 7, height: 8} fmt.Printf("正方形的面积是%d,周长是%d\n", s.area(), s.perimeter()) fmt.Printf("长方形的面积是%d,周长是%d\n", r.area(), r.perimeter()) test(s) test(r) } ```