ホームページ > バックエンド開発 > Golang > Golang のメソッド セットを探索する

Golang のメソッド セットを探索する

PHPz
リリース: 2023-04-14 11:22:15
オリジナル
518 人が閲覧しました

Golang は、Google によって開発され、2009 年に公開された非常に人気のあるプログラミング言語です。これにより、高性能のネットワーク アプリケーションと分散システムが可能になり、最も重要なのは、大規模なメソッド セットを含む非常に強力なライブラリ サポートがあることです。この記事では、Golang のメソッド セットと、それらを使用してより優れたアプリケーションを作成する方法について説明します。

1. メソッド セットとは何ですか?

Golang では、メソッド セットは、特定の型に関連付けられたメソッドのコレクションを指します。これらのメソッドは、通常のメソッド、ポインター メソッド、および継承されたメソッドです。型のメソッド セットには、宣言されたすべてのメソッドのセットが含まれます。メソッド セットの規則は次のとおりです。

  1. メソッド セットは、型の属性です。
  2. タイプ T のメソッド セットには、すべての受信者 T および *T のメソッドが含まれます。
  3. 型 T が他の型を埋め込む場合、埋め込まれた型のメソッド セットも継承します。
  4. 型がインターフェイスを実装する場合、その型はインターフェイスのメソッド セットを継承します。

2. メソッド セットを使用する利点

Golang では、メソッド セットには多くの利点があります。まず、メソッド セットが型に関連付けられているため、コードの再利用性が向上します。そのため、新しい型が特定の型を継承すると、その型のメソッド セット (その中のフィールドやメソッドも含む) も継承されます。 . .次に、メソッド セットにより、コードがより明確になり、理解しやすくなります。最後に、メソッド セットは重複したコードを排除するため、コードの効率を大幅に向上させることもできます。

3. Golang のメソッド セットの実装

Golang では、メソッド セットの実装は非常に簡単です。小さな例で見てみましょう。名前と年齢という 2 つの変数を含む構造体 person があるとします。

type Person struct {

Name string
Age int
ログイン後にコピー

}

次に、個人情報を出力するメソッドを定義する必要があります。このメソッドは次の方法で定義できます:

func (p Person) PrintInfo() {

fmt.Printf("Name: %s, Age: %d\n", p.Name, p.Age)
ログイン後にコピー

}

このコードでは、型 Person のレシーバーを持つメソッド PrintInfo を使用して、個人情報を出力します。メソッド セットの定義では、それに含まれるメソッド セットは Person タイプのメソッド セットです。

次に、別の構造体 Employee を定義します。これは、Person 構造体から Name 変数と Age 変数を継承します。次に、従業員情報を印刷するメソッド PrintEmployeeInfo を定義します。

type Employee struct {

Person
Salary int
ログイン後にコピー

}

func (e Employee) PrintEmployeeInfo() {

e.PrintInfo()
fmt.Printf("Salary: $%d\n", e.Salary)
ログイン後にコピー

}

この例ではでは、Person 構造体のメソッド セットを使用して、Employee のメソッド セットを定義します。したがって、Employee では Person タイプのすべてのメソッドが使用できます。

4. メソッド セットの例

Golang では、メソッド セットは非常に柔軟なので、いくつかの例を見てみましょう。

例 1: メソッド set の継承

この例では、構造体 Animal と構造体 Dog を定義します。 Dog は、Animal から 2 つの変数 Breed と Sex を継承し、メソッド Bark を定義します。

type Animal 構造体 {

Breed string
Sex   string
ログイン後にコピー

}

func (a Animal) AnimalInfo() {

fmt.Printf("Breed: %s, Sex: %s\n", a.Breed, a.Sex)
ログイン後にコピー

}

type Dog 構造体{

Animal
ログイン後にコピー

}

func (d Dog) Bark() {

fmt.Println("Woof!")
ログイン後にコピー

}

この例では、動物タイプのメソッド セットを定義します。これには AnimalInfo メソッドが含まれています。次に、Dog で Bark メソッドが定義されます。Dog は Animal を継承しているため、AnimalInfo メソッドも含まれています。

例 2: ポインター メソッド

Golang では、ポインター メソッドと通常のメソッドの違いは、ポインター メソッドの受信側が構造体へのポインターであるのに対し、通常のメソッドの受信側であることです。構造体のインスタンスです。以下に例を示します。

type Square struct {

Length int
ログイン後にコピー

}

func (s *Square) Area() int {

return s.Length * s.Length
ログイン後にコピー

}

atこの例では、Square 構造体とその中にポインターをレシーバーとして使用する Area メソッドを定義します。これは、Area メソッドを使用する前に、Square インスタンスをそのポインターに変換する必要があることを意味します。

例 3: 継承されたメソッド

この例では、PrintInfo メソッドのみを含むインターフェイス Person を定義します。次に、インターフェイスを実装する構造体 User を定義します。

タイプ パーソン インターフェイス {

PrintInfo()
ログイン後にコピー

}

タイプ ユーザー構造体 {

Name string
Age  int
ログイン後にコピー

}

func (u User) PrintInfo() {

fmt.Printf("Name: %s, Age: %d\n", u.Name, u.Age)
ログイン後にコピー

}

この例では、User 構造体に Person インターフェイスのメソッド セットを実装する PrintInfo メソッドが含まれていることがわかります。 Person 型のインターフェイスである変数がある場合は、User 構造体の PrintInfo メソッドを使用してこのメ​​ソッドを実装できます。

最後にまとめをさせていただきます。メソッド セットは Golang の非常に重要な概念であり、コードの再利用、コードの明瞭さ、コードの効率性など、多くの利点をもたらします。 Golang を学びたい人にとって、メソッドセットを習得することは非常に必要です。この記事を読むことで、初心者がGolangのメソッドセットをより深く理解できるようになれば幸いです。

以上がGolang のメソッド セットを探索するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート