arrays - the - manual de programacion android pdf
¿Cómo puedo usar Go anexar con dos segmentos o arrays de bytes? (2)
La función variadic adjunta agrega cero o más valores
x
as
de tipoS
, que debe ser un tipo de sector, y devuelve el sector resultante, también del tipoS
Los valoresx
se pasan a un parámetro de tipo...T
dondeT
es el tipo de elemento deS
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ámetrosSi 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...)