Maison  >  Article  >  développement back-end  >  Comment les méthodes sont-elles définies et utilisées en langage Go ?

Comment les méthodes sont-elles définies et utilisées en langage Go ?

PHPz
PHPzoriginal
2023-06-10 08:16:361651parcourir

Le langage Go est un langage de programmation populaire ces dernières années. Il est apprécié des développeurs en raison de sa simplicité, de son efficacité, de sa concurrence et d'autres caractéristiques. Parmi eux, la méthode est également un concept très important dans le langage Go. Ensuite, cet article présentera en détail la définition et l'utilisation des méthodes dans le langage Go.

1. Définition de la méthode

Une méthode en langage Go est une fonction avec un récepteur (Receiver), qui est une fonction liée à un certain type. Le récepteur peut être un type valeur ou un type pointeur. Les paramètres du récepteur peuvent être définis avant le nom de la méthode.

Le format de définition de la méthode est le suivant :

func (接收器变量 接收器类型) 方法名(参数列表) (返回值列表) {
    // 方法体
}

où la variable du récepteur est un identifiant, le type du récepteur est un nom de type et une paire de parenthèses est utilisée entre le type du récepteur et la liste des paramètres.

Ce qui suit est un exemple pour comprendre plus en détail la définition de la méthode :

package main

import "fmt"

type Person struct {
    name string
    age  int
}

// 带有接收器的方法
func (p Person) sayHello() {
    fmt.Printf("Hi, my name is %s. I am %d years old.
", p.name, p.age)
}

func main() {
    // 创建一个 Person 实例
    person := Person{"Tom", 18}
    // 调用方法
    person.sayHello()
}

Dans l'exemple ci-dessus, nous avons défini une structure Person, qui a deux champs : nom et âge, et la méthode sayHello est définie dans ce On la structure. Cette méthode n'accepte qu'un récepteur, qui est p Person, indiquant que la méthode est une méthode d'instance du type Person. Les champs du récepteur peuvent être directement appelés dans la méthode

, de sorte que les champs nom et âge de p sont directement accessibles dans la méthode sayHello.

2. Utilisation des méthodes

En langage Go, la méthode d'utilisation est très simple Il suffit de l'appeler via instance.method name(). Voici un exemple plus complexe qui montre les appels de méthode et l'utilisation de récepteurs de type pointeur :

package main

import "fmt"

type Point struct {
    x, y float64
}

// 普通实例方法
func (p Point) Distance(q Point) float64 {
    return ((p.x-q.x)*(p.x-q.x) + (p.y-q.y)*(p.y-q.y)) // 勾股定理求距离
}

// 指针类型接收器方法
func (p *Point) ScaleBy(factor float64) {
    p.x *= factor
    p.y *= factor
}

func main() {
    p1 := Point{1, 1}
    p2 := Point{4, 5}

    fmt.Printf("p1 到 p2 的距离为:%f
", p1.Distance(p2))

    p1.ScaleBy(2)
    fmt.Printf("p1 缩放后的坐标为:(%f, %f)
", p1.x, p1.y)
}

Dans l'exemple ci-dessus, nous avons défini une structure Point qui a deux champs : x et y . Nous définissons deux méthodes Distance et ScaleBy et les lions à la structure Point.

Distance est une méthode d'instance courante, qui reçoit un autre paramètre de type Point et renvoie float64. Cette méthode est utilisée pour calculer la distance entre deux points.

De plus, nous définissons également une méthode de réception de type pointeur ScaleBy, qui est utilisée pour mettre à l'échelle les instances Point selon un certain rapport. Le récepteur de cette méthode est un type pointeur, donc toutes les modifications apportées à p dans ScaleBy sont directement appliquées à l'instance d'origine.

Enfin, dans la fonction principale, nous créons deux instances Point p1 et p2 et appelons les méthodes Distance et ScaleBy. Étant donné que les appels de méthode dans Go ne sont pas aussi fastidieux que dans d’autres langages orientés objet, le code est très concis.

Conclusion

Grâce à l'introduction ci-dessus, j'espère que vous avez compris la définition et l'utilisation des méthodes dans le langage Go. Différents types de récepteurs peuvent implémenter différentes fonctions, ce qui rend les méthodes dans le langage Go très flexibles. L’utilisation de méthodes est non seulement très importante dans la programmation orientée objet, mais constitue également un concept central de la programmation fonctionnelle. Maîtriser l’utilisation des méthodes du langage Go est donc très bénéfique.

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