¿Cómo obtener la matriz subyacente de un segmento en Go?
Digamos que tengo el siguiente conjunto de entradas de longitud 3:
nums := [3]int{1,2,3}
Luego agarro la porción de solo los dos primeros artículos
numSlice := nums[:2]
Invocandocap
en numSlice y nums produce 3 en ambos casos, ylen
produce 2 y 3 respectivamente.
Si luego agrego a esa rebanada (numSlice = append(numSlice, 10)
), la matriz subyacente (nums
) es ahora[1 2 10]
. cap
permanece en 3 para ambos, ya que la matriz subyacente del segmento es la misma, y len para el segmento ahora es 3.
Sin embargo, si agrego a ese segmento nuevamente (numSlice = append(numSlice, 20)
), la matriz subyacente del segmento debe cambiar; vemos que este es el caso cuandocap
ahora se ha duplicado para numSlice y len ahora es 4.
Perdón por la explicación exagerada, solo caminando a través de ella, pero ¿alguien puede explicarme qué sucede debajo del capó a la matriz subyacente y cómo obtener la referencia a la nueva matriz?