Maison > développement back-end > Golang > La conversion de type d'alias de Go crée-t-elle des copies ?

La conversion de type d'alias de Go crée-t-elle des copies ?

DDD
Libérer: 2024-12-23 04:52:14
original
732 Les gens l'ont consulté

Does Go's Alias Type Conversion Create Copies?

L'attribution entre alias déclenche-t-elle la copie dans Go ?

Go permet la définition de types personnalisés à l'aide d'alias. Des inquiétudes surgissent quant à savoir si les conversions entre ces types d'alias entraînent des copies ou simplement des changements structurels.

Considérez cet exemple :

type MyString string 
var s = "very long string"
var ms = MyString(s)
var s2 = string(s)

// Are ms or s2 a full copy of s?
Copier après la connexion

Réponse :

Selon les règles de conversion de Go, les conversions non constantes entre types numériques ou chaînes peuvent entraîner un coût d'exécution en raison des changements de représentation. Cependant, toutes les autres conversions, telles que celles entre alias, préservent la représentation originale sans créer de copies.

Par conséquent, ms et s2 ne sont pas des copies complètes de s mais font référence à la même valeur sous-jacente .

Impact sur les appels de fonction :

Lors de la transmission de valeurs à fonctions, des copies sont généralement créées. Toutefois, cela ne s’applique pas aux types d’alias. L'attribution d'une valeur de type alias à un paramètre de fonction ne déclenche pas la copie :

func foo(s MyString){
  ...
}
foo(ms) // No copy is made when passing ms to foo()
Copier après la connexion

En résumé, même si les conversions entre types d'alias ne créent pas de copies de la valeur sous-jacente, ce principe ne s'étend pas à la transmission de valeurs à fonctions où des copies sont généralement faites.

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