接口开始讲的很晦涩难懂
来源:6-4 接口的值类型

noblenooble
2019-09-13
1.如果go 是隐式 impl
有个interface里面有个Get方法
type Retriever interface {
Get(url string) string
}
然后有个struct并通过实现Retriever构造进行传值
type Retriever struct {
UserAgent string
TimeOut time.Duration
}
那么问题来了如果有另外一个interface也有Get 方法 同时通过Retriever struct 传值 这会发生什么?
type Retriever2 interface {
Get(url string) string
}
type Retriever3 interface {
Get(url string) string
}
func (r *Retriever) Get(url string) string {
resp, err := http.Get(url)
if err != nil {
panic(err)
}
写回答
1回答
-
首先,Retriever接口和Retriever struct重名了,这是不行的。我回答下如果我们有Retriever struct,并且有Retriever2, Retriever3两个接口,会发生什么。
发生的就是Retriever(准确的讲是*Retriever)同时实现了Retriever2, Retriever3两个接口。我们的函数不论是需要Retriever2还是Retriever3,都能够传入*Retriever。
032021-07-16