Maison > Article > développement back-end > Apprenez les méthodes de classe de langage Go et les méthodes d'objet à partir de zéro
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.
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.
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
方法对其进行操作。
类方法和对象方法之间的主要区别在于它们的接收器:
type
rrreeePerson
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
. func
, mais nous le mettons dans la section récepteur func
de la définition type
. 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
.
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 : 🎜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!