Avatar
できた。 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()) }
2:36 AM
インタフェースを満たすかどうかはダックタイピング的に暗黙的に解決されるから、 interface 同士は互換性さえあれば OK なんだ。
2:36 AM
なので、 type InterfaceA InterfaceB はタイプエイリアスのように働く。
2:39 AM
--- メソッドが同一パッケージ内の型に対してしか生やせないので func (i int) Double()int { return i * 2 } みたいに標準ライブラリの型に extension 的にメソッド生やせないの辛そう。 (edited)