Go言語のクラスメソッドとオブジェクトメソッドの比較分析

PHPz
リリース: 2024-04-03 12:45:01
オリジナル
806 人が閲覧しました

Go 言語のクラス メソッドとオブジェクト メソッドでは、定義場所、呼び出しメソッド、インスタンス化の要件、一般的な使用方法、アクセシビリティが異なります。クラスメソッドは構造体型に定義されており、インスタンス化せずに構造体型名を使用して直接呼び出され、初期化、検証、パブリック関数の提供に使用されます。オブジェクト メソッドはオブジェクト上で定義されており、呼び出す前にインスタンス化する必要があります。オブジェクト メソッドは、オブジェクトの状態を操作し、パッケージ内からのみアクセスできるプライベート ヘルパー関数を提供するために使用されます。

Go言語のクラスメソッドとオブジェクトメソッドの比較分析

Go 言語におけるクラスメソッドとオブジェクトメソッドの比較分析

はじめに

Go 言語におけるメソッド型レベル (クラス メソッド) またはオブジェクト レベル (オブジェクト メソッド) で定義できます。これら 2 つのメソッド タイプは動作と使用法が異なります。この記事では、これら 2 つのメソッド タイプの違いを分析し、実際の例を使用してその使用法を説明します。

クラスメソッド

  • 構造体タイプで定義されたメソッド。
  • 構造体の型名を使用して直接呼び出すことができます。
  • 使用する構造体をインスタンス化する必要はありません。
  • 一般的な使用法: 構造体の初期化、入力の検証、公開補助関数。

#例:

type Person struct {
    Name string
    Age  int
}

// 定义Person类型的类方法
func (p *Person) GetNameAndAge() string {
    return fmt.Sprintf("%s, %d", p.Name, p.Age)
}

func main() {
    // 直接使用类方法
    nameAndAge := Person{Name: "John", Age: 30}.GetNameAndAge()
    fmt.Println(nameAndAge)
}
ログイン後にコピー

オブジェクト メソッド

    オブジェクト (構造体インスタンス) メソッドで定義。
  • 構造体は使用する前にインスタンス化する必要があります。
  • 一般的な使用法: オブジェクトのステータスの操作、プライベート ヘルパー関数。
#例:

type Rectangle struct {
    Width  float64
    Height float64
}

// 定义Rectangle类型的对象方法
func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func main() {
    // 实例化Rectangle
    rect := Rectangle{Width: 10, Height: 5}

    // 使用对象方法
    area := rect.Area()
    fmt.Println(area)
}
ログイン後にコピー

違いの比較

特徴定義場所呼び出しメソッドインスタンス化の要件典型的な使用法アクセシビリティ##実際のケース
クラスメソッド オブジェクトメソッド
構造体タイプ 構造体インスタンス
構造型名.メソッド名 オブジェクト.メソッド名
なし 必須
初期化、検証、パブリック関数 操作オブジェクトのステータス、プライベート関数
パッケージ内外からアクセス可能 パッケージ内からのみアクセス可能

実際のプロジェクトでは、クラス メソッドとオブジェクト メソッドには独自のアプリケーション シナリオがあります。

    クラス メソッド:
  • ユーザー入力の検証

      新しいインスタンスの初期化
    • パブリックを提供するヘルパー関数
  • オブジェクト メソッド:
  • オブジェクトの面積または体積を計算する

      比較オブジェクト間の類似性
    • オブジェクトの内部状態を変更する
  • 結論

Go 言語のクラス メソッドとオブジェクト メソッドは、メソッドを柔軟に定義および使用するための柔軟な方法を提供します。 2 つのメソッド タイプの違いを理解することは、明確で適切に管理されたコードを作成するために重要です。

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

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