Golang と他のプログラミング言語におけるインターフェースの比較研究
要約:
インターフェースはプログラミング言語における重要な概念であり、ポリモーフィズムとその実装に使用されます。コードの再利用。プログラミング言語が異なれば、インターフェイスの実装と特性も異なります。この記事では、Golang と他のプログラミング言語でのインターフェイスの実装を比較研究し、具体的なコード例を通じて違いを説明します。
Golang サンプル コード:
type Animal interface { Sound() string } type Cat struct {} func (c Cat) Sound() string { return "Meow" }
Java サンプル コード:
public interface Animal { String sound(); } public class Cat implements Animal { public String sound() { return "Meow"; } }
上記のコードからわかるように、例 Golang でインターフェイスを実装する構造は、インターフェイスを実装することを明示的に宣言する必要はなく、インターフェイスで定義されたメソッドを実装するだけでよいことがわかりました。 Java では、implements
キーワードを使用して、クラスがインターフェイスを実装することを明示的に宣言する必要があります。
Golang サンプル コード:
type Animal interface { Sound() string } type Cat struct { soundFunc func() string } func (c Cat) Sound() string { return c.soundFunc() } func NewCatWithSoundFunc(soundFunc func() string) *Cat { return &Cat{soundFunc: soundFunc} }
Java サンプル コード:
public interface Animal { String sound(); } public class Cat implements Animal { public String sound() { return "Meow"; } } public class Dog implements Animal { public String sound() { return "Woof"; } }
上記の例では、Golang ではCat
構造は、soundFunc
関数を受け取ることで Sound
メソッドの動作を動的に決定しますが、Java の Cat
と Dog は
クラスは、コンパイル時に Animal
インターフェイスを実装することを明示的に宣言する必要があります。
Golang サンプル コード:
type Animal interface { Sound() string } type Cat struct {} func (c Cat) Sound() string { return "Meow" } func BenchmarkSound(b *testing.B) { animal := Cat{} for i := 0; i < b.N; i++ { _ = animal.Sound() } }
Java サンプル コード:
public interface Animal { String sound(); } public class Cat implements Animal { public String sound() { return "Meow"; } } public class Main { public static void main(String[] args) { Animal animal = new Cat(); for (int i = 0; i < 1000000; i++) { animal.sound(); } } }
合格上記のパフォーマンス テストから、仮想関数テーブルの検索と呼び出しのプロセスを回避するため、Golang のインターフェイスのパフォーマンスが優れていることが明らかにわかります。
参考:
以上がGolang と他のプログラミング言語におけるインターフェースの使用に関する比較研究の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。