Go言語のクラスメソッドとオブジェクトメソッドを深く理解する

WBOY
リリース: 2024-04-03 21:27:01
オリジナル
690 人が閲覧しました

Go 言語には従来のクラスやオブジェクトはありませんが、構造体とメソッドが使用されます。クラス メソッドは型にバインドされており、型全体を操作するために使用されます。オブジェクト メソッドはオブジェクト インスタンスにバインドされており、特定のインスタンスを操作するために使用されます。この 2 つのレシーバは異なります。クラス メソッドのレシーバは型ですが、オブジェクト メソッドのレシーバはオブジェクト インスタンス ポインタです。命名規則にも違いがあります。クラス メソッドは大文字で始まり、オブジェクト メソッドは小文字で始まります。

Go言語のクラスメソッドとオブジェクトメソッドを深く理解する

Go 言語のクラス メソッドとオブジェクト メソッドについての深い理解

Go 言語には従来の意味でのクラスとオブジェクトはありませんが、クラスとオブジェクトの動作をシミュレートするための構造体とメソッド。 Go 言語を効果的に使用するには、クラス メソッドとオブジェクト メソッドを理解することが重要です。

クラス メソッド

クラス メソッドは、特定のオブジェクト インスタンスではなく、型自体にバインドされます。これらは通常、新しいインスタンスの作成など、型全体を操作または初期化するために使用されます。 func キーワードを使用してクラス メソッドを宣言し、慣例として最初の文字を大文字にしてクラス メソッドであることを示します。

type Person struct {
  name string
  age  int
}

func (p Person) New(name string, age int) Person {
  return Person{name, age}
}
ログイン後にコピー

オブジェクト メソッド

Object メソッドはメソッド レシーバーにバインドされており、これにより特定のオブジェクト インスタンスに対して操作を実行できるようになります。 func キーワードを使用して、小文字で始まるオブジェクト メソッドを宣言します。

type Person struct {
  name string
  age  int
}

func (p *Person) GetName() string {
  return p.name
}
ログイン後にコピー

実用的なケース

次に、クラスの使用例を示します。メソッドとオブジェクト メソッドの簡単な例:

func main() {
  // 使用类方法创建 Person 实例
  p := Person.New("Alice", 25)

  // 使用对象方法获取 Person 实例的姓名
  name := p.GetName()

  fmt.Println(name) // 输出: Alice
}
ログイン後にコピー

違い

クラス メソッドとオブジェクト メソッドの最も重要な違いは、レシーバーです:

  • クラスメソッドレシーバー: 構造体の型そのもの。
  • オブジェクト メソッド レシーバー: 構造体インスタンス ポインター (アドレス)。

命名規則

  • クラス メソッドは通常、その型に属していることを示すために大文字で始まります。
  • オブジェクト メソッドは通常、オブジェクト インスタンスに属していることを示すために小文字で始まります。

以上がGo言語のクラスメソッドとオブジェクトメソッドを深く理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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