go入门教程- 16.6 使用指针指向接口类型

  1. 16.6 使用指针指向接口类型
    1. 链接

16.6 使用指针指向接口类型

查看如下程序:nexter是一个接口类型,并且定义了一个next()方法读取下一字节。函数nextFewnexter接口作为参数并读取接下来的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 (不能通过编译):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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!")
}

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

链接


免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 [email protected]

推荐阅读:

文章标题:go入门教程- 16.6 使用指针指向接口类型

本文作者:知识铺

发布时间:2019-10-15, 22:30:20

最后更新:2019-10-16, 21:00:39

原始链接:https://blog.zshipu.com/2019/10/15/golang/20191015/16.6/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏