Conversion de tableaux en tranches dans Go
La conversion de tableaux en tranches peut sembler triviale, mais trouver des exemples clairs en ligne peut être difficile. Cet article fournit une solution détaillée à ce problème, en particulier lorsque vous travaillez avec des tableaux d'octets.
Dans Go, un tableau est une collection de valeurs de taille fixe, tandis qu'une tranche est une vue de taille dynamique et de type référence. dans un tableau sous-jacent. Pour convertir un tableau d'octets en tranche d'octets, la syntaxe []byte(array) peut être utilisée. Cependant, cette approche crée une copie des données sous-jacentes, ce qui peut être indésirable dans certains scénarios où l'efficacité est cruciale.
Une méthode plus efficace consiste à utiliser le tableau de syntaxe slice[:]. Cette expression crée une tranche qui partage le tableau sous-jacent avec le tableau d'origine. Par conséquent, toute modification apportée à la tranche ou au tableau sera reflétée dans les deux.
Voici un exemple de code qui illustre le processus de conversion sans créer de copie des données :
package main import "fmt" 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[:]) }
Dans cet exemple, la fonction Foo renvoie un tableau d'octets et la fonction Bar prend une tranche d'octets en entrée. Lorsque la fonction Bar est appelée, l'expression x[:] est utilisée pour créer une tranche qui partage le même tableau sous-jacent que x. Toute modification apportée à x sera reflétée dans la tranche transmise à Bar, et vice versa.
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!