# 接口的定义

URL: https://caijiao.org/go/03-structured/06-interface-def
Source: docs/go/03-structured/06-interface-def.md
Description: 本节介绍 Go 语言中接口的基本定义，阐述接口的作用及其使用场景。

接口（interface）是一组方法签名的集合，定义对象的行为规范。

## 1. 定义接口

使用 `interface` 关键字定义接口类型：

```go
type Speaker interface {
    Speak() string
}
````

接口中只包含方法签名，不实现具体方法。

## 2. 实现接口

任意类型只要实现接口中所有方法，即隐式实现该接口：

```go
type Person struct {
    Name string
}

func (p Person) Speak() string {
    return "Hello, my name is " + p.Name
}
```

`Person` 类型自动实现了 `Speaker` 接口。

## 3. 接口变量

接口类型变量可以存储实现该接口的任意类型值：

```go
var s Speaker
s = Person{Name: "Alice"}
fmt.Println(s.Speak())  // 输出：Hello, my name is Alice
```

---

接口实现多态，解耦代码依赖，提高灵活性。
