Maison  >  Article  >  développement back-end  >  Comment transmettre différents types de paramètres dans Golang

Comment transmettre différents types de paramètres dans Golang

PHPz
PHPzoriginal
2024-04-23 08:36:02444parcourir

Les méthodes de passage de paramètres des fonctions dans Go sont divisées en : 1) passage par valeur (types et structures de base), 2) passage par référence (types de référence et pointeurs), 3) passage par référence par valeur (rarement utilisé). Le choix de la méthode de livraison appropriée affecte les performances et la sémantique des fonctions.

Comment transmettre différents types de paramètres dans Golang

Comment transmettre différents types de paramètres dans Go

Dans Go, les paramètres d'une fonction peuvent être transmis de différentes manières, ce qui affectera la manière dont la fonction utilise ces paramètres. Voici trois manières courantes de transmettre différents types de paramètres dans Go :

Passage par valeur

Le passage par valeur est le moyen le plus simple de transmettre. De cette façon, la fonction crée une copie de l'argument, de sorte que les modifications apportées à l'argument n'affectent pas la valeur d'origine. Les types primitifs (tels que int, float64 et string) et les structures sont transmis par valeur. Par exemple :

func inc(n int) {
    // 创建参数 n 的副本
    n++
}

func main() {
    a := 5
    inc(a) // a 的值保持为 5,因为 n 是 a 的副本
    fmt.Println(a) // 输出:5
}

Pass by reference

Pass by reference Passe les paramètres par pointeur. Une fonction peut modifier un pointeur vers un paramètre, modifiant ainsi indirectement la valeur d'origine. Les types de référence (tels que les tranches, les cartes et les fonctions) sont transmis par référence. Les pointeurs (comme *int) sont également transmis par référence. Par exemple :

func inc(n *int) {
    // n 是指向原始值 a 的指针
    *n++
}

func main() {
    a := 5
    inc(&a) // 修改 a 的值
    fmt.Println(a) // 输出:6
}

Passer la référence par valeur

Passer la référence par valeur est une manière peu courante de transmettre des choses, mais parfois c'est utile. De cette façon, la fonction crée une copie du pointeur vers la valeur du paramètre. Par exemple :

func incValueRef(val *float64) {
    // val 是指向参数值 f 的指针的副本
    *val++
}

func main() {
    f := 5.0
    incValueRef(&f) // 修改 f 的值
    fmt.Println(f) // 输出:6.0
}

Choisir la bonne méthode de passage est important car cela affecte les performances et la sémantique de la fonction. Le passage par valeur est plus rapide, mais le passage par référence permet à la fonction de modifier la valeur d'origine. Le passage par référence fournit un compromis entre les deux.

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