采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,请教一下,在接口组合这一章节中有以下两个小片段: 实参: fmt.Println(session(&retriever)) 形参: func session(s RetrieverPoster) string {
请问:为什么不是*RetrieverPoster? 谢谢!
因为RetrieverPoster是一个接口。接口我们几乎不会作为指针来使用,所以一定是s RetrieverPoster。
但接口的具体实现本身也是一个“结构”,它里面会放一个“值”,这个“值”可能是一个具体的对象的拷贝,也可能是一个指针。这就是我之前“接口的值类型”所要讲述的。
所以,这个形参s,永远都是RetrieverPoster,我不管它是怎么实现的,当然也不管它是不是用一个指针实现的。
那么我们这里实参这边retriever,它的Get方法中,接收者是(*Retriever),是一个指针类型,所以是&retriever实现了RetrieverPoster,而不是retriever。
登录后可查看更多问答,登录/注册
语法+分布式爬虫实战 为转型工程师量身打造
3.7k 14
713 1
2.0k 1
1.1k 12