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 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 }
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 }
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) }
在这个例子中,radius
参数的值通过值传递传递给 calculateVolume
函数。函数内部,radius
参数的副本被使用来计算体积。因此,函数内对 radius
参数的任何修改都不会影响主函数中的原始 radius
rrreee
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!