package main import "fmt" type Foo interface{ A()int } type Bar Foo type ConcreteFoo struct{} func (t ConcreteFoo) A()int { return 42 } func main() { var a Foo = ConcreteFoo{} var b Bar = a fmt.Println(b.A()) }
interface
同士は互換性さえあれば OK なんだ。type InterfaceA InterfaceB
はタイプエイリアスのように働く。func (i int) Double()int { return i * 2 }
みたいに標準ライブラリの型に extension 的にメソッド生やせないの辛そう。 (edited)