Maison > développement back-end > Golang > Portée et cycle de vie des variables dans le passage des paramètres de la fonction Golang

Portée et cycle de vie des variables dans le passage des paramètres de la fonction Golang

PHPz
Libérer: 2024-04-14 08:06:02
original
461 Les gens l'ont consulté

Les paramètres de la fonction Go ne reçoivent des copies que lorsqu'ils sont transmis par valeur, donc les modifications au sein de la fonction n'affecteront pas la variable d'origine. En utilisant des pointeurs, le passage par référence peut être réalisé afin que les modifications au sein d'une fonction affectent la variable d'origine.

Portée et cycle de vie des variables dans le passage des paramètres de la fonction Golang

Portée variable et cycle de vie dans le passage des paramètres de la fonction Go

Dans le langage Go, la portée variable et le cycle de vie des paramètres de fonction sont similaires aux variables locales. Autrement dit, la durée de vie des variables paramètres est limitée à la durée d’exécution de la fonction.

Passage par valeur

Par défaut, les paramètres des fonctions Go sont transmis par valeur. Cela signifie que la fonction reçoit une copie de la variable paramètre, plutôt qu'une référence à la variable d'origine. Par conséquent, toute modification apportée aux variables de paramètre au sein de la fonction n’affectera pas les variables d’origine en dehors de la fonction.

func changeValue(num int) {
  num = 10
}

func main() {
  num := 5
  changeValue(num)
  fmt.Println(num) // 输出:5
}
Copier après la connexion

Passage par référence

En utilisant des pointeurs, le passage par référence peut être obtenu. Lorsque vous transmettez un pointeur vers une fonction, la fonction obtient une référence à la variable d'origine, pas une copie. Cela signifie que les modifications apportées aux variables de paramètre au sein de la fonction affecteront également les variables d'origine en dehors de la fonction.

func changeValue(num *int) {
  *num = 10
}

func main() {
  num := 5
  changeValue(&num)
  fmt.Println(num) // 输出:10
}
Copier après la connexion

Cas pratique

Considérons un programme qui calcule le volume d'une sphère à l'aide de la formule de calcul du volume de la sphère V = (4/3) * π * r³ : V = (4/3) * π * r³ 计算球体体积的程序:

import (
  "fmt"
  "math"
)

func calculateVolume(radius float64) float64 {
  return (4 / 3.) * math.Pi * math.Pow(radius, 3)
}

func main() {
  var radius float64
  fmt.Printf("Enter the radius of the sphere: ")
  fmt.Scan(&radius)
  volume := calculateVolume(radius)
  fmt.Printf("The volume of the sphere is: %.2f\n", volume)
}
Copier après la connexion

在这个例子中,radius 参数的值通过值传递传递给 calculateVolume 函数。函数内部,radius 参数的副本被使用来计算体积。因此,函数内对 radius 参数的任何修改都不会影响主函数中的原始 radiusrrreee

In cet exemple, la valeur du paramètre radius est transmise à la fonction calculateVolume par valeur. À l'intérieur de la fonction, une copie du paramètre radius est utilisée pour calculer le volume. Par conséquent, toute modification du paramètre radius dans la fonction n'affectera pas la variable radius d'origine dans la fonction principale. 🎜

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!

Étiquettes associées:
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