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 サイトの他の関連記事を参照してください。