2016-07-27 4 views
2

JavaおよびC#では、Objectクラスは暗黙的に定義されているすべてのクラスの親です。同じようなことがありますか?GolangにJavaとC#Objectと同じものがありますか?

+6

行くタイプでも、親を持っているだけでは、共通の祖先をさせてください。 – user2357112

+1

授業はありません。どのような特定の問題を解決しようとしていますか? –

+0

javaには、 'getHashCode'や' toString'のようなメソッドのためのいくつかのデフォルト実装があります。ゴランではどうなりますか? – mahdix

答えて

5

Goに継承はありません。
私はあなたがinterfaceを探していると思う:

Go: What's the meaning of interface{}?

いますが、オブジェクトに似たような(ないクラス)が必要な場合は、 interfaceを使用することがあります。

インタフェース型の変数も、明確な動的型を持っています は、実行時に変数に割り当てられた値の具体的な型です (値が事前に宣言された識別子nilでない場合は、 型はありません)。実行中に動的タイプが変わる可能性がありますが、 インターフェイス変数に格納されている値は、常に 変数の静的タイプに割り当てられます。

var x interface{} // x is nil and has static type interface{} 
var v *T   // v has value nil, static type *T 
x = 42    // x has value 42 and dynamic type int 
x = v    // x has value (*T)(nil) and dynamic type *T 

と:

インタフェースタイプ:

インターフェイスタイプは、そのインタフェースと呼ばれるメソッドのセットを指定します。 インターフェイスタイプの変数には、インターフェイスの任意のスーパーセットであるメソッド が設定された任意のタイプの値を格納できます。そのようなタイプは、 にインタフェースを実装すると言われています。初期化されていない変数 の値はnilです。

参照:http://golang.org/doc/go_spec.html

+2

で提供してください。不正確です言いたいことは、OOP言語ではないということです。それは継承ではなく、オブジェクト(あらゆるユーザ定義の型の)とメソッドを持ちます。しかし、継承はオブジェクト指向言語の定義上の性質ではありません - https://en.wikipedia.org/wiki/Object-oriented_programming –

+2

ACKを参照してください。私はいつもGoはオブジェクト指向だがクラスベースではないと言っている。 – svenwltr

関連する問題