2015-01-20 7 views
8

Sto cercando di convertire un array di dimensione fissa [32]byte ad un array di dimensioni variabili (slice) []byte:Converti dimensione fissa serie di array di dimensioni variabili in Go

package main 

import (
     "fmt" 
) 

func main() { 
     var a [32]byte 
     b := []byte(a) 
     fmt.Println(" %x", b) 
} 

ma il compilatore genera l'errore:

./test.go:9: cannot convert a (type [32]byte) to type []byte 

Come devo convertirlo?

risposta

11

Usa b := a[:] per ottenere la fetta sopra la matrice che avete. Vedi anche post sul blog this per ulteriori informazioni su array e slice.

9

Non ci sono matrici di dimensioni variabili in Go, solo sezioni. Se si desidera ottenere una fetta di tutta la serie, fare questo:

b := a[:] // Same as b := a[0:len(a)] 
+1

Si noti che le porzioni si comportano un po 'come array di dimensioni variabili in quanto, se si continua a utilizzare 'append' su una sezione, esso crescerà per riallocazione quando necessario. –

Problemi correlati