ホームページ > バックエンド開発 > Golang > golangメソッドの詳しい解説

golangメソッドの詳しい解説

PHPz
リリース: 2023-04-25 15:32:20
オリジナル
712 人が閲覧しました

Go 言語 (Golang) は、新興の高性能プログラミング言語として、近年、開発分野でますます注目され、サポートされています。その中でも Go メソッドは Go 言語の重要な機能であり、コードを整理するためのより便利な方法を提供するだけでなく、コードの再利用とメンテナンスを改善することもできます。以下では、Go メソッドの概念、種類、定義、使用法をそれぞれ紹介します。

1. メソッドの概念

Go 言語では、メソッドとは、特定の型に関連付けられ、その型で呼び出すことができる関数です。通常、メソッドはレシーバー パラメーターを使用して定義されます。レシーバー パラメーターは、メソッドが呼び出される型を表します。このレシーバー パラメーターを通じて、メソッドは、データを操作する機能を実装するタイプのプロパティとメソッドにアクセスできます。

たとえば、構造型 Person の場合、文字列型を返すメソッド SayHello を定義できます。

type Person struct {

name string
age  int
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

func (p Person) SayHello() string {

return "Hello, my name is " + p.name + ", I'm " + strconv.Itoa(p.age) + " years old."
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

上記のコードでは、SayHello メソッドは受信者 p Person を定義し、それをメソッド内で使用します。受信者の属性名と年齢が取得され、最終的に文字列型の挨拶が返されます。このメソッドを定義した後は、Person 型のインスタンスを通じて呼び出すことができます。

2. メソッドの種類

Go メソッドは、値レシーバーとポインター レシーバーの 2 つのタイプに分類できます。

値型レシーバー (つまり、インスタンス値のコピー) は、通常、インスタンスの内部状態を変更する必要がないシナリオで使用され、次のように定義されます。 func (p Person) SayHello() string {

return "Hello, my name is " + p.name + ", I'm " + strconv.Itoa(p.age) + " years old."
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

ポインター型レシーバー (つまり、インスタンスのポインター) は、通常、インスタンスの内部状態を確認する必要があるシナリオで使用されます。

func (p * Person) IncreaseAge() {

p.age++
ログイン後にコピー
ログイン後にコピー

}

上記のコードでは、メソッド IncreaseAge はレシーバー p を定義します。

Person を指定し、メソッド内の受信者の年齢属性を変更します。ポインタ型の受信側は、型へのポインタ、またはアドレスを必要とする型を受け取ることができることに注意してください。この形式のメソッド宣言では、型名の前に "

" が必要です。ここでの "*" はポインタ型です。 3. メソッドの定義

Go のメソッドを定義するには、型宣言時にメソッドを定義する方法と、外部の関数を通じてメソッドを定義する方法があります。タイプ。

メソッドは型宣言で次のように定義されます:

type Person struct {

name string
age  int
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

func (p Person) SayHello() string {

return "Hello, my name is " + p.name + ", I'm " + strconv.Itoa(p.age) + " years old."
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

上記のコードでは、SayHello メソッドが Person タイプ内で定義されています。

型の外の関数を使用してメソッドを定義する方法は次のとおりです。

type Person struct {

name string
age  int
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

func (p Person) SayHello () string {

return "Hello, my name is " + p.name + ", I'm " + strconv.Itoa(p.age) + " years old."
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

func (p *person) IncreaseAge() {

p.age++
ログイン後にコピー
ログイン後にコピー

}

上記のコードでは、メソッド IncreaseAge関数によって定義され、Person タイプの外側に追加されます。

4. メソッドの使用法

メソッドは他の関数と同様に使用され、次の 2 つの方法で呼び出すことができます:

1. 型のインスタンスを通じて呼び出されます。 。

p := 人{名前: "トム"、年齢: 18}

p.SayHello() // こんにちは、私の名前はトム、18 歳です。


2. 型ポインタを介して呼び出します。

pp := &person{name: "Jack", age: 20}

pp.IncreaseAge() // pp の年齢属性を変更します。この時点では pp.age=21 です。


上記は Go メソッドの詳細な紹介です。Go を使用して開発する開発者にとって、構造またはインターフェイス型を通じて Go メソッドを適用すると、コードの再利用とメンテナンスをより効果的に行うことができます。

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

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