我有一个实现接口I的struct T,但是我希望* T到而不是实现接口。这可能吗?
也就是说,这应该编译得很好:
var obj I = T{}
但这会产生编译错误:
var obj I = &T{}
原因是我的代码库中偶然使用* T作为特定接口I是一个常见的错误,因为预计只会使用T。
答案 0 :(得分:3)
不可能。来自spec(强调我的):
类型可能具有与之关联的方法集。接口类型的方法集是其接口。任何其他类型T的方法集由使用接收器类型T声明的所有方法组成。相应指针类型的方法集* T是使用receiver * T或T 声明的所有方法的集合(即是,它还包含T)的方法集。