Go言語のクラスメソッドとオブジェクトメソッドをゼロから学ぶ

WBOY
リリース: 2024-04-03 11:03:02
オリジナル
969 人が閲覧しました

在 Go 中,类方法与对象方法的主要区别在于它们的接收器:类方法使用类名调用,而对象方法需要实例引用。类方法适合全局操作,对象方法适合特定实例操作。步骤:类方法:func 关键字声明,放在 type 定义中,接收器为类本身。对象方法:func 关键字声明,放在 type 定义的 func 接收器部分,接收器为实例指针。

Go言語のクラスメソッドとオブジェクトメソッドをゼロから学ぶ

Go 语言:从零开始学习类方法和对象方法

Go 语言中,我们可以使用类方法和对象方法来实现对象的行为。本文将从头开始逐步引导您了解这两种方法之间的区别以及如何使用它们。

类方法

类方法是绑定到类本身的方法。它们可以通过类名直接调用,无需创建类实例。在 Go 中,我们使用 func 关键字声明类方法,并将其放在 type 定义中。

type Person struct {
    Name string
}

func (p Person) Greet() {
    fmt.Println("Hello, my name is " + p.Name)
}
ログイン後にコピー

上面的示例定义了一个 Person 类型和与之关联的 Greet 类方法。我们可以使用 Person.Greet 直接调用此方法,而无需创建 Person 实例。

对象方法

对象方法是与类实例相关的方法。它们只能通过实例调用,不能通过类名直接调用。在 Go 中,我们也使用 func 关键字声明对象方法,但我们会将其放入 type 定义的 func 接收器部分中。

type Person struct {
    Name string
}

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

上面的示例定义了一个 Person 类型和一个名为 SetName 的对象方法。此方法需要一个 Person 指针作为接收器,这意味着它只能通过 Person 实例调用。

实战案例

以下是一个使用类方法和对象方法的 Go 程序示例:

package main

import "fmt"

type Person struct {
    Name string
}

func (p Person) Greet() {
    fmt.Println("Hello, my name is " + p.Name)
}

func (p *Person) SetName(name string) {
    p.Name = name
}

func main() {
    person := Person{Name: "John Doe"}

    person.Greet()
    person.SetName("Jane Doe")
    person.Greet()
}
ログイン後にコピー

在这个程序中,我们定义了一个 Person 类型及其关联的类方法 Greet 和对象方法 SetName。我们创建了一个 Person 实例 person,并使用其 Greet 方法和 SetName 方法对其进行操作。

关键区别

类方法和对象方法之间的主要区别在于它们的接收器:

  • 类方法有一个隐式的 type 接收器,允许它们通过类名直接调用。
  • 对象方法有一个接收器变量,必须是该类型的指针,这使得它们只能通过实例调用。

总的来说,类方法最适合于全局操作,而对象方法最适合于应用于特定实例的操作。

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

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