Go 言語のオブジェクト指向プログラミングには、他の言語と次のような違いがあります。 クラス宣言: Go ではクラスの代わりに構造体が使用されます。継承: Go には明示的な継承はなく、代わりに匿名フィールドが使用されます。ポリモーフィズム: インターフェイスとメソッド値を通じて実装されます。データのカプセル化: 構造体とメソッドのアクセシビリティ キーワードを通じてデータ アクセスを制御します。
オブジェクト指向プログラミングは重要なプログラミング パラダイムであり、Go 言語にも反映されています。言語ですが、他の言語と比較するといくつかの違いがあります。これらの違いを理解することは、Go 開発者にとって非常に重要です。
クラスの宣言
ほとんどのオブジェクト指向言語では、クラスはキーワード class
で宣言されますが、Go 言語では、構造体は次のように機能します。クラス。構造は、type
キーワードを使用して宣言されます。
type Person struct { name string age int }
継承
従来のオブジェクト指向言語は通常、継承をサポートしており、サブクラスが継承できるようにします。親クラスのメソッドとプロパティから。ただし、Go 言語には明示的な継承メカニズムがありません。代わりに、匿名フィールドを使用して同様の効果を実現します。
type Employee struct { Person salary int }
ポリモーフィズム
ポリモーフィズムは、さまざまなオブジェクトがオブジェクトに応答できるようにするオブジェクト指向プログラミングの基本原理です。同じメッセージを一貫した方法で送信します。従来の言語では、ポリモーフィズムは関数オーバーライドと仮想メソッドを通じて実装されます。 Go 言語は、インターフェイスを通じて同様の機能を実装します。
type Employee interface { GetSalary() int } func GetTotalSalary(employees []Employee) int { total := 0 for _, e := range employees { total += e.GetSalary() } return total }
データのカプセル化
データのカプセル化とは、オブジェクトがデータを隠し、インターフェイスを通じてのみ外部と通信する機能です。またはセッター/ゲッター メソッドの相互作用。 Go 言語の構造体とメソッドは、アクセシビリティのために大文字によるデータのカプセル化を実装します。
Unexported
フィールドとメソッドは小文字で始まり、同じパッケージにのみ含まれます。内部で表示されます。 Exported
フィールドとメソッドは大文字で始まり、パッケージの外部からアクセスできます。 実際的なケース
以下は、動作の違いを示す簡単な Go コード例です:
package main import "fmt" type Person struct { name string age int } func (p Person) GetName() string { return p.name } func main() { p1 := Person{name: "John", age: 30} fmt.Println(p1.GetName()) // 会输出 "John" }
このコードは次のことを示しています。 Go 言語のオブジェクト指向機能が導入されています。
以上がさまざまな言語のオブジェクト指向と Go 言語のオブジェクト指向の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。