golangのメソッドレシーバーの概念と使い方

PHPz
リリース: 2023-04-11 14:33:47
オリジナル
911 人が閲覧しました

Go 言語は、非常に効率的なプログラミング方法となるように設計されたオープンソース プログラミング言語です。 Go 言語は他のプログラミング言語と比較して多くの独自の機能を備えていますが、その 1 つがメソッド レシーバー (メソッド レシーバー) です。この記事ではGo言語におけるメソッドレシーバーの概念と使い方を中心に紹介します。

  1. メソッドレシーバーとは何ですか?

Go 言語では、メソッド レシーバーは、特定の型にバインドし、その型の値でメソッドを呼び出すことができるようにする特別な関数です。メソッド レシーバーは、レシーバー関数または単にレシーバーとも呼ばれます。レシーバーは型定義を囲み、開発者が型のメソッドを定義できるようにします。メソッド レシーバーは、メソッドのパラメーターとパラメーターの型を指定します。

  1. メソッド レシーバーの構文

メソッドのレシーバーは、関数名の前に指定されるパラメーター (またはパラメーターのグループ) です。以下に、型 T のレシーバーを持つメソッドの完全な形式を示します。

func (t T) methodName(parameter_list)(return_type_list){
    //Code Block
}
ログイン後にコピー
ログイン後にコピー

ここで、レシーバーは関数名の前に指定され、型 T のパラメーターが 1 つあります。ポインター型 T の値をレシーバーとして使用できます。 methodNameT 型のポインターを指すメソッドの場合、そのレシーバーとして T 型または *T 型の値を使用できます。

受信機に関して、知っておく必要があるいくつかの概念は次のとおりです。

  • T: タイプ、つまりメソッド レシーバーのパラメーターのタイプ。
  • methodName: メソッド名。
  • parameter_list: パラメータ リスト。関数パラメータ リストと同じです。
  • return_type_list: 戻り値のリスト。関数の戻り値のリストと同じです。

たとえば、Go 言語では、次のように Person 型を定義し、レシーバーが Person## である GetAge() を定義できます。 # タイプ メソッド:

// Person with name and age as attributes.
type Person struct {
    name string
    age  int
}

// Method to get person's age
func (p Person) GetAge() int {
    return p.age
}

func main() {
    // Create a person object
    person := Person{"Alice", 25}

    // Calling GetAge() Method.
    fmt.Println("Age of the person is:", person.GetAge()) // Output: Age of the person is: 25
}
ログイン後にコピー
上の例では、タイプ

Person を定義し、それをレシーバーとして GetAge()## メソッドに渡しました。 GetAge() メソッドを使用して、Person 型のオブジェクトの年齢を取得します。

ポインター型をレシーバーとして使用する
  1. ポインター型
T

の値をレシーバーとして使用できます。 methodNameT 型 (つまり T) のポインターを指すメソッドの場合、その型として T または T の値を使用できます。受信機。たとえば、Go 言語では、次のように Person 型を定義し、レシーバーが Person 型ポインタである SetName() メソッドを定義できます。 # #

// Person with name and age as attributes.
type Person struct {
    name string
    age  int
}

// Method to set person's name
func (p *Person) SetName(name string) {
    p.name = name
}

func main() {
    // Create person object
    person := &Person{"Alice", 25}

    // Calling SetName() method
    person.SetName("Bob")

    // Retrieved person's name
    fmt.Println("The person's name is:", person.name) // Output: The person's name is: Bob
}
ログイン後にコピー
上記の例では、型 person を定義し、それをポインタ型

*person のレシーバーとしてメソッド SetName( )## に渡します。 #。 SetName() メソッドを使用して、Person 型オブジェクトの名前を設定します。 概要

    Go 言語では、メソッド レシーバーは、特定の型にバインドするために使用され、値でメソッドを呼び出すことができる特別な関数です。レシーバーメソッドを定義するときは、関数名の前にレシーバーのタイプを指定する必要があります。構文は次のとおりです。
  1. func (t T) methodName(parameter_list)(return_type_list){
        //Code Block
    }
    ログイン後にコピー
    ログイン後にコピー
  2. ここで、
T

は受信者のタイプであり、任意のタイプを指定できます。メソッド レシーバーには、型定義、メソッド名、パラメーター、戻り値の型が含まれます。ポインター型

T

をレシーバーとして使用する場合、型 T または *T の値をレシーバーとして使用できます。 Go 言語でメソッド レシーバーを定義して使用すると、プログラムの可読性と再利用性が向上します。

以上がgolangのメソッドレシーバーの概念と使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!