最近由于项目需求,阅读一些Go语言编写的项目的源代码,在某一个函数中发现了一个奇怪的现象:一个函数的返回值类型声明的是一个接口的类型,但是实际在函数体内返回的却是一个结构体类型的对象。在经过一些资料的查阅之后,自己得到了如下的解释:一个结构体实现了一个接口,那么函数中返回值类型为接口时,就应该返回这个结构体。这是Go的一种语法,但实际的作用或者为是什么这样写,我还没有弄清楚,但是通过以上这个实实在在的例子,关于为什么返回值类型和实际返回的不一样有了一定的理解。

Go语言-为什么返回值为接口类型,却返回结构体

Go语言-为什么返回值为接口类型,却返回结构体

Go语言-为什么返回值为接口类型,却返回结构体