Todos estamos familiarizados con las matrices, ya sea en Go o en otros lenguajes de programación. Una matriz es una colección de elementos de un tipo de datos relacionado (dependiendo). En Go, una matriz solo puede contener elementos de un tipo similar. Las matrices tienen una longitud fija y no pueden crecer o encoger una vez que se define el tamaño.
Una porción es una vista de tamaño dinámico de los elementos de una matriz. Una porción es muy flexible, lo que le permite cambiar el tamaño. Sin embargo, el cambio de tamaño debe permanecer bajo la capacidad de la matriz subyacente.
Declarando una porción
Podemos declarar una porción usando una sintaxis simple como se muestra a continuación:
var slice_name [] datos _typeEn la sintaxis anterior, comenzamos especificando el nombre de slice_name seguido de un par de soportes cuadrados y el tipo de datos para el corte.
Notarás que la declaración de corte es muy similar a la de una matriz. Sin embargo, no especificamos un tamaño para una porción.
Crea Slice - Método 1
Hay dos métodos para crear una porción en Go. El primero es usar el formato literal. Esto es muy similar al que se muestra en la sintaxis anterior.
Por ejemplo, el siguiente código crea una porción llamada my_slice:
paquete principalEl ejemplo anterior crea una porción de tipo int con valores predeterminados. Si no desea utilizar el método VAR de declaración variable, puede usar la sintaxis a continuación:
my_slice: = [] int 1,2,3,4,5,6El método anterior se conoce como Slice Literal.
Crear rebanada - Método 2
El segundo método para crear una porción en GO es usar la función Make.
La sintaxis es como:
func make ([] t, len, cap) [] tLa función toma un tipo de datos, longitud y capacidad en este caso. La función asignará una matriz con el tamaño especificado por el parámetro de capacidad. La función devuelve una porción que hace referencia a esa matriz.
Para verlo en la práctica, vea a continuación:
slice_var: = make ([] int, 10)Este ejemplo declara una porción de tamaño 10 e int tipo. La salida resultante es una porción de 0 valores.
[0 0 0 0 0 0 0 0 0 0 0]Puede asignar los valores a la porción utilizando la notación del índice.
Para asignar un valor en el índice 1, podemos hacer:
slice_var [0] = 10El código anterior debe devolver:
[10 0 0 0 0 0 0 0 0 0 0]Tenga en cuenta que el elemento en el índice 0 se actualiza para reflejar el nuevo valor.
Propiedades de corte
Hay dos propiedades importantes de una porción con la que debe estar familiarizado. La longitud y la capacidad.
La longitud de la porción se refiere al número total de elementos en poder de la porción, mientras que la capacidad se refiere al número de elementos definidos por la matriz subyacente. Esto se cuenta desde el primer elemento de la porción.
Para obtener la longitud y la capacidad de una porción, puede usar los métodos Len () y Cap (), respectivamente.
Un ejemplo es como se demuestra a continuación:
paquete principalEl código de ejemplo anterior debe devolver la longitud y la capacidad de la porción como:
Ength: 6GO SEGURA DEL ÍNDICE
¿Sabes que podemos formar una porción de las rodajas existentes??
Podemos lograr esto especificando un índice unido con un límite bajo y alto. Por ejemplo, para crear una nueva porción con elementos del índice 1 al 5:
new_slice: = my_slice [1: 5]Iteración de corte
Podemos iterar sobre una matriz usando el clásico para un bucle.
Por ejemplo:
paquete principalEn el ejemplo anterior, usamos una instrucción para bucle y un rango para iterar sobre el índice y el elemento de la porción. La salida resultante:
0 PythonSi no desea utilizar la instrucción Rango para recorrer el corte, puede usar la longitud de la porción como:
para i: = 0; i < len(my_slice); i++El ejemplo anterior devolverá una salida similar al usar la construcción de rango.
Ir a copiar elemento
El método de copia le permite copiar elementos de una porción a otra. Considere el ejemplo a continuación:
funccopy_slice ()La función devolverá el número total de elementos copiados.
Rebanada multidimensional
También puede crear una porción multidimensional. Básicamente significa una porción de rebanadas. Un ejemplo es como se muestra:
funcmulti_slice ()El ejemplo anterior debe imprimir una porción multidimensional como:
[[1 2] [3 4] [5 6] [7 8]]Para acceder a elementos en una matriz multidimensional, puede usar índices como:
fmt.Println (multi_slice [0] [0])La sintaxis anterior devuelve el primer elemento en la primera porción.
Conclusión
Esta guía te ayuda con los conceptos básicos de trabajar con rodajas en Go. Aunque no podemos agotar rodajas en el alcance de este tutorial, debería comenzar a comenzar.