Je veux assigner une chaîne de caractères à un tableau d'octets :
var arr [20]byte
str := "abc"
for k, v := range []byte(str) {
arr[k] = byte(v)
}
Vous avez une autre méthode ?
Je veux assigner une chaîne de caractères à un tableau d'octets :
var arr [20]byte
str := "abc"
for k, v := range []byte(str) {
arr[k] = byte(v)
}
Vous avez une autre méthode ?
Pour convertir une chaîne de caractères en une tranche d'octets, string -> []byte
:
[]byte(str)
Pour convertir un tableau en une tranche, [20]byte -> []byte
:
arr[:]
Pour copier une chaîne de caractères dans un tableau, string -> [20]byte
:
copy(arr[:], str)
Comme ci-dessus, mais en convertissant d'abord explicitement la chaîne en une tranche :
copy(arr[:], []byte(str))
copy
ne fait que copier à une tranche, de une tranche.[:]
permet de qualifier un tableau de tranche.copy
ne copiera que la partie de la chaîne qui convient (et les runes multi-octets peuvent alors n'être copiées que partiellement, ce qui corrompra la dernière rune de la chaîne résultante).Ce code :
var arr [20]byte
copy(arr[:], "abc")
fmt.Printf("array: %v (%T)\n", arr, arr)
...donne le résultat suivant :
array: [97 98 99 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ([20]uint8)
Je l'ai également rendu disponible à la Go Playground
Je pense que c'est mieux..
package main
import "fmt"
func main() {
str := "abc"
mySlice := []byte(str)
fmt.Printf("%v -> '%s'",mySlice,mySlice )
}
Vérifiez ici : http://play.golang.org/p/vpnAWHZZk7
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.