golang make struct T实现我而不是* T.

时间:2016-09-16 01:03:03

标签: go

我有一个实现接口I的struct T,但是我希望* T到而不是实现接口。这可能吗?

也就是说,这应该编译得很好:

var obj I = T{}

但这会产生编译错误:

var obj I = &T{}

原因是我的代码库中偶然使用* T作为特定接口I是一个常见的错误,因为预计只会使用T。

1 个答案:

答案 0 :(得分:3)

不可能。来自spec(强调我的):

  

类型可能具有与之关联的方法集。接口类型的方法集是其接口。任何其他类型T的方法集由使用接收器类型T声明的所有方法组成。相应指针类型的方法集* T是使用receiver * T或T 声明的所有方法的集合(即是,它还包含T)的方法集。