Maison  >  Article  >  développement back-end  >  Comment appeler la fonction Golang

Comment appeler la fonction Golang

PHPz
PHPzoriginal
2024-04-21 09:21:01496parcourir

Il existe deux manières d'appeler des fonctions dans Go : en passant par valeur et en passant par référence. Le passage par valeur transmet une copie de la variable à la fonction sans affecter la valeur de la variable d'origine ; le passage par référence transmet l'adresse de la variable à la fonction, et toute modification affectera la valeur de la variable d'origine. En combat réel, la fonction Ajouter utilise le passage de valeur et la fonction Multiplier utilise le passage de référence pour modifier la valeur de la variable de différentes manières.

Comment appeler la fonction Golang

Comment appeler la fonction Go

Dans le langage Go, l'appel de fonction peut être implémenté de deux manières : en passant par valeur et en passant par référence.

Pass-by-value

Pass-by-value transmet une copie d'une variable à une fonction, ce qui signifie que toute modification au sein de la fonction n'affectera pas la valeur de la variable d'origine.

package main

import "fmt"

func add(x int) int {
    x++  // 修改 x 的副本
    return x
}

func main() {
    y := 5
    newY := add(y)  // 传递 y 的副本
    fmt.Println(newY)  // 输出 6
    fmt.Println(y)  // 输出 5
}

Pass-by-reference

Pass-by-reference transmet l'adresse d'une variable à une fonction, ce qui signifie que toute modification apportée à la variable dans la fonction affectera la valeur de la variable d'origine.

package main

import "fmt"

func add(x *int) {
    *x++  // 修改 x 指向的值
}

func main() {
    y := 5
    add(&y)  // 传递 y 的地址
    fmt.Println(y)  // 输出 6
}

Cas pratique

Dans le code suivant, nous définissons deux fonctions : AddMultiplyAdd 使用值传递,而 Multiply Passer par référence.

package main

import "fmt"

func Add(x int) {
    x++
}

func Multiply(x *int) {
    *x *= 2
}

func main() {
    a := 5
    Add(a) // 调用 Add,使用值传递
    fmt.Println(a) // 输出 5(值不变)

    b := 10
    Multiply(&b) // 调用 Multiply,使用引用传递
    fmt.Println(b) // 输出 20(值已修改)
}

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