2016-09-16 10 views
0

インタフェースTを実装する構造体Tを持っていますが、* Tをに、に実装しません。これは可能ですか?golangは構造体Tを実装しますが、Tは実装しません。* T

これは罰金コンパイルする必要があり、次のとおりです。

var obj I = T{} 

が、これはコンパイルエラーを生成する必要があります:

var obj I = &T{} 

理由は、誤って使用するように私のコードベースではよくある間違いであるということです* Tのみが使用されることが予想される場合には、あるインタフェースIとしてTを使用する。

答えて

3

できません。 spec(強調鉱山):

A type may have a method set associated with it. The method set of an interface type is its interface. The method set of any other type T consists of all methods declared with receiver type T. The method set of the corresponding pointer type *T is the set of all methods declared with receiver *T or T (that is, it also contains the method set of T).

関連する問題