Maison > développement back-end > Golang > Comment convertir des tableaux Go en tranches pour le passage de fonctions ?

Comment convertir des tableaux Go en tranches pour le passage de fonctions ?

Barbara Streisand
Libérer: 2024-12-12 18:28:22
original
449 Les gens l'ont consulté

How to Convert Go Arrays to Slices for Function Passing?

Conversion de tableaux en tranches dans Go

Lorsque vous travaillez avec Go, vous pouvez rencontrer des situations dans lesquelles vous devez convertir des tableaux en tranches pour un traitement ultérieur. Les tableaux sont des collections d'éléments de taille fixe, tandis que les tranches sont dynamiques et peuvent s'agrandir ou se réduire selon les besoins.

Considérez le scénario suivant : vous disposez d'une fonction qui renvoie un tableau d'octets :

func Foo() [32]byte {...}
Copier après la connexion

Vous souhaitez transmettre le résultat de cette fonction à une autre fonction qui attend une tranche d'octets :

func Bar(b []byte) { ... }
Copier après la connexion

Attribuer simplement le tableau au slice, comme ceci :

d := Foo()
Bar(d)
Copier après la connexion

entraînera une erreur de compilation en raison d'une incompatibilité de type. Pour convertir le tableau en tranche, vous pouvez utiliser la syntaxe [:] pour créer un en-tête de tranche qui pointe vers le tableau sous-jacent :

func main() {
    x := Foo()
    Bar(x[:])
}
Copier après la connexion

Cette opération ne crée pas de copie des données sous-jacentes ; à la place, il crée un en-tête de tranche qui fait référence au même emplacement mémoire que le tableau.

Voici un exemple complet qui démontre la conversion et le passage du tableau à la fonction Bar :

func Foo() [32]byte {
    return [32]byte{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}
}

func Bar(b []byte) {
    fmt.Println(string(b))
}

func main() {
    x := Foo()
    Bar(x[:])
}
Copier après la connexion

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