エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
なぜ `T` と `*T` のメソッドセットが違うのか?~Goの仕様を考える~
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
なぜ `T` と `*T` のメソッドセットが違うのか?~Goの仕様を考える~
package main type A struct { id int } func (a A) ID() int { return a.id } type B struct { id int ... package main type A struct { id int } func (a A) ID() int { return a.id } type B struct { id int } func (b *B) ID() int { return b.id } type I interface { ID() int } func main() { var i I _ = i.(A) _ = i.(*A) _ = i.(B) // B does not implement I (method ID has pointer receiver) _ = i.(*B) } GoPlaygroundで動かす どうやら構造体 B はインターフェイス I を実装していないようです。 構造体 B はメソッド ID() int を持っているので、インターフェイス I を実装しているように直感的には