10.1 接口型

Go 中的接口定义了一种类型,或者更一般地说,一组类型("类型集")。

  • 在运行时,基本接口类型的变量可用于在声明的接口的类型集(称为 "静态类型")中的任何类型(称为 "动态类型")。

  • 通用接口可用于将通用类型参数限制为类型和函数声明中指定的类型集。

接口类型的零值为 nil。

接口类型由关键字 interface 指定,其后跟着零个、一个或多个接口元素的列表,用一对花括号括起来。每个接口元素可以是:

  • 方法规范,例如方法名称和签名

  • (非接口)类型或底层类型,或

  • 两个或多个非接口类型或底层类型的联合(|)。

在语法上,非接口类型的底层类型由类型名称前的波浪符(~)表示。此语法 ~T 仅可用于其底层类型为 T 本身的类型 T。

例子:

interface {
    ToFloat() float64  // 显式方法名称和签名。此接口是基本接口
}

interface {
    int                // 此接口表示 int 类型
}

interface {
    ~int32             // 此接口表示 int32 以及基础类型为 int32 的所有其他类型。请注意,int32 的基础类型是 int32 本身
}

interface {
    bool | ~int8       // 布尔类型或具有基础类型 int8 的所有类型的类型,包括 int8
}

类型定义可用于创建命名接口类型,包括泛型接口类型。

最后更新于