Golang est un langage de programmation fortement typé et statiquement typé qui offre d'excellentes performances, concurrence, simplicité et sécurité. Parmi eux, la méthode est un concept très important en Golang, qui permet aux programmeurs d’exploiter les structures plus facilement. Cet article présentera aux lecteurs les méthodes de Golang, y compris la définition, l'appel et l'héritage des méthodes, pour aider les débutants à se familiariser rapidement avec l'utilisation des méthodes.
1. Définition de la méthode
Une méthode est une fonction spéciale, qui doit avoir un récepteur avant de pouvoir être appelée. Le récepteur peut être de type structure ou non structurel (comme int, float, etc.). Les méthodes peuvent être définies dans n’importe quel package, pas seulement dans celui où se trouve la structure.
Le format de définition de la méthode est le suivant :
func (接收器变量 接收器类型) 方法名(参数列表)(返回值列表){ // 函数体 }
Parmi eux, la variable du récepteur peut être n'importe quel nom de variable légal, et le type du récepteur peut être n'importe quel type, mais il doit s'agir d'un type dans le package actuel. À l'intérieur d'une méthode, vous pouvez utiliser des variables du récepteur pour accéder aux champs et aux méthodes contenus par le récepteur.
Il existe deux types de récepteurs :
L'exemple de code est le suivant :
type Rect struct{ width, height float64 } // 定义求面积的方法(值类型接收器) func (r Rect) area() float64{ return r.width * r.height } // 定义求面积的方法(指针类型接收器) func (r *Rect) areaPtr() float64{ return r.width * r.height }
Dans le code ci-dessus, nous définissons deux méthodes pour trouver l'aire d'un rectangle, l'une utilise un récepteur de type valeur et l'autre utilise un récepteur de type pointeur.
2. L'appel de méthode
est similaire à l'appel de fonction nécessite l'utilisation de l'opérateur point. Lors de l'appel d'une méthode, Golang résout automatiquement le type de récepteur de la méthode et transmet le récepteur auquel la méthode appartient comme premier paramètre.
L'exemple de code est le suivant :
package main import "fmt" type Rect struct{ width, height float64 } // 定义求面积的方法(值类型接收器) func (r Rect) area() float64{ return r.width * r.height } // 定义求面积的方法(指针类型接收器) func (r *Rect) areaPtr() float64{ return r.width * r.height } func main(){ rect := Rect{10, 20} // 调用值类型接收器的方法 fmt.Println(rect.area()) // 输出:200 // 调用指针类型接收器的方法 fmt.Println(rect.areaPtr()) // 输出:200 // 使用&符号获取指针,再调用指针类型接收器的方法 fmt.Println((&rect).areaPtr()) // 输出:200 }
Dans le code ci-dessus, nous créons un rectangle rect et appelons ses deux méthodes.
Il est à noter que lors de l'utilisation de la méthode d'un récepteur de type valeur, si le récepteur est un type valeur d'une structure, ses valeurs de champ ne seront pas modifiées. Lors de l'utilisation de la méthode du récepteur de type pointeur, si le récepteur est une structure de type pointeur, ses valeurs de champ seront modifiées.
3. Héritage de méthode
En Golang, un type peut obtenir l'héritage en combinant d'autres types. Pendant le processus d'héritage, les méthodes du sous-type peuvent remplacer les méthodes du type parent pour implémenter sa propre logique.
L'exemple de code est le suivant :
package main import "fmt" type Shape interface{ area() float64 } type Rect struct{ width, height float64 } // 定义矩形类的方法 func (r Rect) area() float64{ return r.width * r.height } type Circle struct{ radius float64 } // 定义圆形类的方法 func (c Circle) area() float64{ return 3.14 * c.radius * c.radius } func main(){ rect := Rect{10, 20} circle := Circle{10} // 创建形状对象,使用接口类型接收 var shape Shape // 将矩形类型赋值给接口类型 shape = rect fmt.Println(shape.area()) // 输出:200 // 将圆形类型赋值给接口类型 shape = circle fmt.Println(shape.area()) // 输出:314 }
Dans le code ci-dessus, nous définissons une interface Shape, comprenant une méthode pour calculer la surface. Ensuite, nous avons défini deux types de forme, Rect et Circle, qui couvrent respectivement la méthode Area dans l'interface Shape. Enfin, nous calculons la surface en attribuant respectivement les types Rect et Circle au type d'interface Shape.
Résumé :
Cet article présente des connaissances sur la définition, l'appel et l'héritage des méthodes dans Golang. En étudiant cet article, les lecteurs peuvent comprendre le rôle du concept important de méthode dans Golang et maîtriser ses compétences d'utilisation de base. Sur cette base, les lecteurs peuvent apprendre davantage la syntaxe et les applications de Golang, maîtriser des compétences d'utilisation de méthodes plus avancées et améliorer leurs capacités de programmation.
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!