我目前在C++
之后正在学习go
。每次面对interface
时,我都会卡住。例句:
s := []interface{}{"a", "b", "c"}
string怎么可能是接口?
我不知道在go
中引入了什么意义上的接口。还有很多关于接口的疑问。
回答上述问题,特别是提供一些关于接口的学习资源将是伟大的。
Thanks in advance:)
根据定义,接口被定义为一组方法签名。因此,它用于指示哪些方法应该由另一个类型实现。如果接口没有在接口声明体中指定任何方法签名,那么任何有效类型都可以是该接口的类型,因为没有成为该接口的先决条件。
在您的示例中,片包含interface{}
类型,这意味着任何类型都可以作为片输入的有效候选。
s := []interface{}{"a", 1, false}
https://tour.golang.org/methods/9是探索和学习go
的好地方。
可以把接口看作是一个容器,里面保存着一个值和该值的类型。
当你定义自己的接口时,编译器将确保你赋值(存储在接口中)的方法与你在接口定义中指定的方法相匹配。
空接口,interface{}
,没有方法,因此可以存储任何值,因为不期望存在任何特定的方法。
如果您还没有,请查看A Tour of Go中的接口部分。