Golang は、シンプルで使いやすいだけでなく、大規模なコード ベースを作成および保守する際に非常に効率的な最新のプログラミング言語です。 Golang はオブジェクト指向プログラミングをサポートしており、含まれる概念の 1 つが構造です。 Golang の構造とメソッドに関する関連知識を見てみましょう。
1. 構造体とは何ですか?
Golang では、構造体は、同じ型または異なる型のフィールドのセットで構成されるカスタム データ型です。構造体は、オブジェクトのプロパティとメソッドのセットを説明するテンプレートと考えることができます。以下は単純な構造の例です。
type Person struct { Name string Age int }
この例では、人の名前と年齢をそれぞれ表す 2 つのフィールド Name と Age を含む Person という名前の構造を定義します。構造体のフィールドには、組み込み型やカスタム型など、さまざまなデータ型を含めることができます。たとえば、職歴フィールドを追加したい場合は、次のようにすることができます:
type Person struct { Name string Age int Experience []string }
2. その方法は何ですか?
メソッドは、構造に関連付けられた関数です。構造体に対して操作を実行し、そのフィールドにアクセスして変更することができます。 Golang では、メソッド定義は関数定義と非常に似ていますが、メソッドは関数名の前にレシーバーの型を追加する必要があります。レシーバーのタイプは、構造体またはその他のタイプにすることができます。
以下は簡単なメソッドの例です:
type Person struct { Name string Age int } func (p Person) SayHello() { fmt.Println("Hello, my name is", p.Name) }
この例では、レシーバーとして p という名前の Person オブジェクトを持つメソッド SayHello を定義します。受信者として Person オブジェクトがあるため、メソッド内でそのフィールドにアクセスし、その他の操作を実行できます。たとえば、次のコードを使用してこのメソッドを呼び出すことができます。
person := Person{Name: "Alice", Age: 25} person.SayHello()
これにより、「こんにちは、私の名前はアリスです」がコンソールに出力されます。
3. 構造メソッドと関数の違い
Golang では、関数とメソッドは 2 つの異なる概念ですが、構文は非常に似ています。構造メソッドと関数の違いは次のとおりです。
4. 構造体のポインター メソッドと値メソッド
関数と同様に、ポインター メソッドと呼ばれる構造体ポインターに対してメソッドを定義することもできます。これらのメソッドは構造体へのポインターを受け取り、構造体のフィールドを変更できます。ポインタ メソッドの例を次に示します。
type Person struct { Name string Age int } func (p *Person) UpdateName(name string) { p.Name = name }
この例では、受信者として Person オブジェクトへの名前付きポインタを持つメソッド UpdateName を定義します。ポインターをレシーバーとして使用しているため、メソッド内で構造体のフィールドを変更できます。たとえば、次のコードを使用してこのメソッドを呼び出し、p の名前を「Bob」に更新します。
person := &Person{Name: "Alice", Age: 25} person.UpdateName("Bob")
上記の例では、メソッドに Person オブジェクトへのポインタを渡し、名前を変更します。オブジェクト。 。
値メソッド (ポインターなし) は構造体のコピーに対してのみ実行できるため、元の構造体を変更することはできません。ほとんどの場合、構造を変更できるようにポインター メソッドを使用する必要があります。
5. 概要
関数と同様、メソッドも Golang の基本概念です。構造体と組み合わせて使用すると、より構造化されたコードを記述するための非常に便利なツールになります。この記事では、構造体の定義、メソッドの定義、ポインタ メソッドと値メソッドの違いなど、Golang の構造体とメソッドに関する関連知識を紹介します。この記事が Golang のオブジェクト指向プログラミングを理解するのに役立つことを願っています。
以上がgolang 構造メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。