# 16.6 使用指针指向接口类型

查看如下程序：`nexter`是一个接口类型，并且定义了一个`next()`方法读取下一字节。函数`nextFew`将`nexter`接口作为参数并读取接下来的`num`个字节，并返回一个切片：这是正确做法。但是`nextFew2`使用一个指向`nexter`接口类型的指针作为参数传递给函数：当使用`next()`函数时，系统会给出一个编译错误：**n.next undefined (type *nexter has no
field or method next)** （译者注：n.next未定义（*nexter类型没有next成员或next方法））

例 16.1 pointer_interface.go (不能通过编译):

```go
package main
import (
    "fmt"
)
type nexter interface {
    next() byte
}
func nextFew1(n nexter, num int) []byte {
    var b []byte
    for i:=0; i < num; i++ {
        b[i] = n.next()
    }
    return b
}
func nextFew2(n *nexter, num int) []byte {
    var b []byte
    for i:=0; i < num; i++ {
        b[i] = n.next() // 编译错误:n.next未定义（*nexter类型没有next成员或next方法）
    }
    return b
}
func main() {
    fmt.Println("Hello World!")
}
```

**永远不要使用一个指针指向一个接口类型，因为它已经是一个指针。**

## 链接

- [目录](directory.md)
- 上一节：[不需要将一个指向切片的指针传递给函数](16.5.md)
- 下一节：[使用值类型时误用指针](16.7.md)
