print - recorrer array golang
¿Declarar rebanada o hacer rebanada? (2)
Además de la answer fabriziom , puede ver más ejemplos en " Go Slices: use and internals ", donde se menciona el uso de []int
:
Dado que el valor cero de un segmento (
nil
) actúa como un segmento de longitud cero , puede declarar una variable de sector y anexarla a un bucle:
// Filter returns a new slice holding only
// the elements of s that satisfy f()
func Filter(s []int, fn func(int) bool) []int {
var p []int // == nil
for _, v := range s {
if fn(v) {
p = append(p, v)
}
}
return p
}
Significa que, para agregar a un sector, no es necesario asignar memoria primero: el nil
slice p int[]
es suficiente como un segmento para agregar.
En Golang, ¿cuál es la diferencia entre var s []int
y s := make([]int, 0)
?
Encuentro que ambos funcionan, pero ¿cuál es mejor?
Declaración simple
var s []int
no asigna memoria s
puntos a nil
, mientras
s := make([]int, 0)
asigna memoria s
puntos a la memoria en un sector con 0 elementos.
Por lo general, el primero es más idiomático si no conoce el tamaño exacto de su caso de uso.