Go言語を弟子から影響を受けて勉強し始めました。

現在行っているチュートリアルは

Goプログラミング言語のチュートリアル

になります。

一番最初にびっくりしたことは

クラス

という概念がないことである。

いままで

「オブジェクト指向=クラスの継承で実装」

でしていたのに、この言語は、

「多態性は、インターフェイスでのみ実装」

である。

C++でいうところの純粋仮想関数みたいな感じだそうです。

--http://www.atmarkit.co.jp/news/200911/11/go.htmlより抜粋

Goには“インターフェイス”と名付けられた仕組みがあり、パイク氏自身は「おそらくGoの中で、もっとも斬新なアイデア」だとしている。Goのインターフェイスは、C++でいえば、純粋仮想関数に似ているという。データメンバがなく、すべての関数が仮想関数であるようなクラスだ。Goでは、あるインターフェイスが定義するメソッドをすべて実装した型は、そのインターフェイスを実装しているものと見なされる。こうして個々のメソッドという実装をクラスという概念でまとめるよりも、より柔軟な型とメソッドの対応付けが可能になるのだという。
------------------------------------

同名関数でもレシーバ次第で、振る舞いが異なるみたいな

インジェクションが簡単です。

同じインターフェイスを持っていれば振る舞いを一発で
入れ替えることができる。

Seasar(JavaではなくC#のほうで経験ですが、、何か!)と同じことが
Go言語では、言語レベルでサポートしている。

イイトコ取りですね。。

いままでは

クラスと変数

という概念がほとんどでしたが、

Go言語は


型が、すべてオブジェクトであり、クラスである。



である。

言い方を変えれば



何でもあり



なのである。

大規模プロジェクトで、
あとからバグ修正のためにインターフェイスを作成し
強制で処理を入れ替える。

こんなことができてしまう。


あ~~




最初の設計が命


です。



相互作用がぐちゃぐちゃになりかねない。。。



いいのか????


Googleさんよ~~~。。







ではでは。べーっだ!