Maison >développement back-end >Golang >Apprenez les méthodes de classe de langage Go et les méthodes d'objet à partir de zéro

Apprenez les méthodes de classe de langage Go et les méthodes d'objet à partir de zéro

WBOY
WBOYoriginal
2024-04-03 11:03:02977parcourir

Dans Go, la principale différence entre les méthodes de classe et les méthodes objet réside dans leur récepteur : les méthodes de classe sont appelées avec le nom de la classe, tandis que les méthodes objet nécessitent une référence d'instance. Les méthodes de classe conviennent aux opérations globales et les méthodes d'objet conviennent aux opérations d'instance spécifiques. Étapes : Méthode de classe : déclaration du mot-clé func, placée dans la définition du type, et le récepteur est la classe elle-même. Méthode objet : déclaration de mot-clé func, placée dans la partie récepteur func de la définition de type, et le récepteur est un pointeur d'instance.

Apprenez les méthodes de classe de langage Go et les méthodes dobjet à partir de zéro

Langage Go : apprenez les méthodes de classe et les méthodes d'objet à partir de zéro

Dans le langage Go, nous pouvons utiliser les méthodes de classe et les méthodes d'objet pour implémenter le comportement des objets. Cet article vous guidera étape par étape à travers les différences entre les deux méthodes et comment les utiliser.

Méthodes de classe

Les méthodes de classe sont des méthodes liées à la classe elle-même. Ils peuvent être appelés directement par nom de classe sans créer d’instance de classe. Dans Go, nous déclarons une méthode de classe à l'aide du mot-clé func et la plaçons dans la définition type. 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 方法对其进行操作。

关键区别

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

  • 类方法有一个隐式的 typerrreee
  • L'exemple ci-dessus définit un type Person et sa méthode de classe Greet associée. Nous pouvons appeler cette méthode directement en utilisant Person.Greet sans créer d'instance Person.
  • Méthodes d'objet
  • Les méthodes d'objet sont des méthodes liées aux instances de classe. Ils ne peuvent être appelés que via des instances, pas directement via des noms de classe. Dans Go, nous déclarons également les méthodes objet en utilisant le mot-clé func, mais nous le mettons dans la section récepteur func de la définition type.
rrreee

L'exemple ci-dessus définit un type Person et une méthode objet nommée SetName. Cette méthode nécessite un pointeur Person comme récepteur, ce qui signifie qu'elle ne peut être appelée qu'à partir d'une instance Person.

🎜Cas pratique🎜🎜Voici un exemple de programme Go utilisant des méthodes de classe et des méthodes objets : 🎜rrreee🎜Dans ce programme, nous définissons un type Person et sa méthode de classe associée Greet et la méthode objet SetName. Nous créons une instance Person person et opérons dessus en utilisant ses méthodes Greet et SetName. 🎜🎜Différences clés🎜🎜La principale différence entre les méthodes de classe et les méthodes objets réside dans leurs récepteurs : 🎜
    🎜🎜Les méthodes de classe 🎜 ont un récepteur type implicite qui leur permet de passer Le nom de la classe est appelé directement. 🎜🎜🎜Les méthodes objets🎜 ont une variable réceptrice qui doit être un pointeur du type, ce qui les rend appelables uniquement via l'instance. 🎜🎜🎜En général, les méthodes de classe sont les meilleures pour les opérations globales, tandis que les méthodes d'objet sont les meilleures pour les opérations qui s'appliquent à une instance spécifique. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn