RubyでのダックタイピングRubyでは、メソッドで受け取る引数の型を制限しません。型を制限していません。メソッドを呼び出すことができれば問題は起こりません。メソッドを呼び出せれば良い」と割り切っていることが、ダックタイピングです。オブジェクトに依存しており、結合度が高い状態となっています。Javaでinterfaceを使ったダックタイピング(のようなもの)Javaでもinterfaceを使ってダックタイピングと同じようなことができます。実装(soundメソッドを実装)したオブジェクトであれば、受け取れるようになっています。受け取る形より結合度は低いですね。testメソッドにDuckMockオブジェクトを渡したい場合は以下のように定義します。実装しているということを__明示的に宣言しています__。Go言語のダックタイピングGo言語にもinterfaceがあり、以下のように書けます。明示的に宣言しなくても良いところです。以下のように書きます。fmt.Println("Ga-Ga-")}単純にインターフェースと同じシグニチャを持ったメソッドを定義するだけで済みます。この点は、よりダックタイピングに近い形になっていると言えます。機能は__型付きのダックタイピング__と言えます。...}__答えは「どんな型でも受け取る」です。__一つもメソッドが指定されていないので、どのオブジェクトでも当てはまるということですね。Go言語では、色々な型を受け取りたい場合は、これを応用します。避けたほうが良いですが。まとめGo言語でのダックタイピングについて解説してみました。他のオブジェクト指向プログラミング言語をやってきた人が少し戸惑うポイントだと思うので、理解の助けになれば幸いです。ウェブサービス株式会社(DWS)公式ブログ記事URLをコピーしました。