Maison > développement back-end > Golang > Passer « ce » par valeur a-t-il un impact sur les performances dans les méthodes Go ?

Passer « ce » par valeur a-t-il un impact sur les performances dans les méthodes Go ?

Patricia Arquette
Libérer: 2024-12-19 17:27:10
original
735 Les gens l'ont consulté

Does Passing

Le passage de « ceci » par valeur dégrade-t-il les performances dans les méthodes Go ?

Contrairement au C où les arguments de fonction transmis par valeur peuvent entraîner des performances significatives pénalités dues à la copie de variables, les récepteurs de méthodes de Go suivent un paradigme différent.

Dans Go, les récepteurs de méthodes sont de simples récepteurs syntaxiques commodités. Comme démontré ci-dessous :

type Something struct {
    Value int
}

func (s *Something) ChangeValue(n int) {
    s.Value = n
}

func main() {
    o := new(Something)
    fmt.Println(o.Value)           // Prints 0
    o.ChangeValue(8)             // Changes o's value to 8
    fmt.Println(o.Value)           // Prints 8
    (*Something).ChangeValue(o, 16) // Same as calling o.ChangeValue(16)
    fmt.Println(o.Value)           // Prints 16
}
Copier après la connexion

Remarquez que le récepteur dans ChangeValue est un pointeur, ce qui le rend similaire à une référence en C . Si le récepteur était un type valeur, il ne permettrait pas la mutation de valeur.

Par conséquent, l'approche du récepteur de pointeur de Go garantit l'encapsulation et empêche la copie de l'intégralité de « cette » instance, contrairement à la pénalité de performances observée dans C/C. pour passer des arguments par valeur.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal