Go 接口使用
本文来自: CSDN博客 感谢作者:fengfengdiandia 查看原文: go 接口 Go 语言不是一种 “传统” 的面向对象编程语言:它里面没有 类 和 继承 的概念。 但是 Go 语言里有非常灵活的 接口 概念,通过它可以实现很多 面向对象 的特性。 接口 定义了一个 方法的集合 ,但是这些方法 不包含实现代码 ,它们是 抽象的 ,接口里也 不能包含变量 。 定义格式 定义接口的一般格式: type Namer interface { Method1(param_list) return_type Method2(param_list) return_type ... } 上面的 Namer 就是一个接口类型。 在 Go 语言中 接口 可以有值, 一个 接口类型 的变量或一个 接口值 : var ai Namer , ai 是一个 multiword 数据结构,它的值是 nil 。 它本质上是一个 指针 ,虽然不完全是一回事。指向接口值的指针是 非法的 ,会导致代码错误。 类型 (比如结构体)实现接口方法集中的方法,实现了 Namer 接口类型的变量可以赋值给 ai ,此时方法表中的指针会指向被实现的接口方法。 实现某个接口的类型,除了实现接口的方法外,还可以有自己的方法。 package main import "fmt" type Shaper interface {