type the studio provided programacion not convert arraybufferview array arrays append byte go

arrays - the - manual de programacion android pdf



¿Cómo puedo usar Go anexar con dos segmentos o arrays de bytes? (2)

Anexando y copiando cortes

La función variadic adjunta agrega cero o más valores x a s de tipo S , que debe ser un tipo de sector, y devuelve el sector resultante, también del tipo S Los valores x se pasan a un parámetro de tipo ...T donde T es el tipo de elemento de S y se aplican las respectivas reglas de paso de parámetros.

append(s S, x ...T) S // T is the element type of S

Pasando argumentos a ... parámetros

Si el argumento final es asignable a un tipo de segmento []T , puede pasarse sin cambios como el valor para un parámetro ...T si el argumento es seguido por ...

Necesitas usar []T... para el argumento final.

Por ejemplo,

package main import "fmt" func main() { one := make([]byte, 2) two := make([]byte, 2) one[0] = 0x00 one[1] = 0x01 two[0] = 0x02 two[1] = 0x03 fmt.Println(append(one[:], two[:]...)) three := []byte{0, 1} four := []byte{2, 3} five := append(three, four...) fmt.Println(five) }

Recientemente intenté agregar dos segmentos de matriz de bytes en Go y encontré algunos errores extraños. Mi código es:

one:=make([]byte, 2) two:=make([]byte, 2) one[0]=0x00 one[1]=0x01 two[0]=0x02 two[1]=0x03 log.Printf("%X", append(one[:], two[:])) three:=[]byte{0, 1} four:=[]byte{2, 3} five:=append(three, four)

Y los errores son:

cannot use four (type []uint8) as type uint8 in append cannot use two[:] (type []uint8) as type uint8 in append

Lo cual, teniendo en cuenta la supuesta robustez de los cortes de Go, no debería ser un problema:

http://code.google.com/p/go-wiki/wiki/SliceTricks

¿Qué estoy haciendo mal, y cómo debo hacer para agregar matrices de dos bytes?


append() toma una porción del tipo []T , y luego un número variable de valores del tipo del miembro T de la división. En otras palabras, si pasa un []uint8 como el segmento para append() entonces quiere que cada argumento subsiguiente sea un uint8 .

La solución a esto es usar la sintaxis de la slice... para pasar una porción en lugar de un argumento varargs. Tu código debería verse como

log.Printf("%X", append(one[:], two[:]...))

y

five:=append(three, four...)