Maison > développement back-end > Golang > Débuter avec les méthodes Golang

Débuter avec les méthodes Golang

WBOY
Libérer: 2023-05-22 17:03:39
original
457 Les gens l'ont consulté

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 (接收器变量 接收器类型) 方法名(参数列表)(返回值列表){
    // 函数体
}
Copier après la connexion

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 :

  • Récepteur de type valeur (récepteur de valeur) : les méthodes utilisant des récepteurs de type valeur feront une copie du récepteur lorsqu'elles seront appelées, et les modifications apportées au récepteur dans la méthode ne seront pas reflétées sur le récepteur. variable d'origine.
  • Récepteur pointeur : les méthodes utilisant des récepteurs de type pointeur ne copieront pas le récepteur et les modifications apportées au récepteur au sein de la méthode seront directement reflétées dans la variable d'origine.

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
}
Copier après la connexion

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
}
Copier après la connexion

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal