Maison  >  Article  >  développement back-end  >  Comment changer le contenu de la fonction dans Golang

Comment changer le contenu de la fonction dans Golang

PHPz
PHPzoriginal
2023-04-24 09:10:06521parcourir

Golang est un langage de programmation conçu pour résoudre divers problèmes qui surviennent lors de l'écriture de grands programmes. Golang possède une syntaxe relativement simple et de puissantes capacités de concurrence, ce qui le rend largement utilisé dans des domaines tels que le développement Web et les systèmes distribués. Dans Golang, différentes manières d'exploiter les données sont proposées. Cet article se concentrera sur la façon de modifier le contenu de la fonction.

1. Modification des paramètres de fonction

Dans Golang, il existe deux manières de transférer les paramètres de fonction : le transfert de valeur et le transfert de pointeur. Passer par valeur signifie qu'une copie de la variable est transmise et que les modifications apportées au paramètre dans la fonction n'affecteront pas la variable d'origine. Le passage du pointeur signifie que l'adresse de la variable est transmise et que les modifications apportées au paramètre dans la fonction affecteront la variable d'origine.

L'exemple de code est le suivant :

package main

import "fmt"

func main() {
    // 值传递
    x := 10
    modify(x)
    fmt.Println("x =", x)

    // 指针传递
    y := 10
    modifyByPointer(&y)
    fmt.Println("y =", y)
}

func modify(x int) {
    x = 20
}

func modifyByPointer(y *int) {
    *y = 20
}

Le résultat de sortie est :

x = 10
y = 20

Comme le montre le résultat de sortie, le transfert de valeur ne modifiera pas la valeur de la variable d'origine, tandis que le transfert de pointeur modifiera la valeur de la variable d'origine. variable d'origine.

2. Modification de la valeur de retour de la fonction

Dans Golang, les fonctions peuvent avoir plusieurs valeurs de retour. Si la fonction renvoie la valeur d'une variable, les modifications apportées à la valeur renvoyée dans la fonction n'affecteront pas la variable d'origine. Cependant, si la fonction renvoie un pointeur vers une variable, les modifications apportées à la variable pointée par le pointeur renvoyé dans la fonction affecteront la variable d'origine.

L'exemple de code est le suivant :

package main

import "fmt"

func main() {
    x := 10
    y := modifyAndReturnPointer(&x)
    fmt.Println("x =", x)
    fmt.Println("y =", *y)
}

func modifyAndReturnPointer(x *int) *int {
    *x = 20
    return x
}

Le résultat de sortie est :

x = 20
y = 20

Il ressort du résultat de sortie que la modification de la variable pointée par le pointeur renvoyé à l'intérieur de la fonction affectera la variable d'origine.

3. Modifications lorsque des variables sont utilisées comme paramètres de fonction

Dans Golang, les fonctions peuvent transmettre des variables en tant que paramètres et modifier les variables à l'intérieur de la fonction. Si elle est passée par valeur, alors la modification de la variable à l'intérieur de la fonction n'affectera pas la variable d'origine ; si elle est passée par pointeur, alors la modification de la variable à l'intérieur de la fonction affectera la variable d'origine.

L'exemple de code est le suivant :

package main

import "fmt"

type Person struct {
    name string
    age  int
}

func main() {
    p := Person{name: "Tom", age: 20}
    fmt.Println(p)
    modifyStruct(&p)
    fmt.Println(p)
}

func modifyStruct(p *Person) {
    p.age = 30
}

Le résultat de sortie est :

{Tom 20}
{Tom 30}

Il peut être vu à partir du résultat de sortie que la modification de la structure pointée par le pointeur à l'intérieur de la fonction affectera la variable d'origine.

En bref, en Golang, la façon dont la variable est modifiée à l'intérieur de la fonction dépend de la façon dont la variable est passée par pointeur, alors la modification de la variable à l'intérieur de la fonction affectera la variable d'origine. Par conséquent, lors de l'écriture d'un programme Golang, vous devez choisir la méthode de livraison et la méthode de modification appropriées en fonction de la situation réelle.

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