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 {...}
Vous souhaitez transmettre le résultat de cette fonction à une autre fonction qui attend une tranche d'octets :
func Bar(b []byte) { ... }
Attribuer simplement le tableau au slice, comme ceci :
d := Foo() Bar(d)
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[:]) }
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[:]) }
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!