Literales compuestos en Go
Go tiene varios tipos de identificadores integrados, también conocidos como tipos predeclarados, como boolean, string, numérico (float32, float64, int, int8, int16, int32, complex), etc.
También hay clases compuestas, que consisten en tipos predeclarados. Los valores para matrices, estructuras, sectores y mapas se construyen utilizando un literal compuesto.
Cada vez que se evalúan, se crea un nuevo valor. Consiste en el tipo del literal seguido de una lista de elementos entre llaves.
Veamos algunas instancias de literales compuestos.
Cortar literales compuestos en Go
Slice es un tipo de datos compuesto que funciona de manera similar a una matriz en el sentido de que contiene elementos del mismo tipo de datos. La distinción fundamental entre una matriz y un segmento es que un segmento puede cambiar de tamaño dinámicamente, mientras que una matriz no puede hacerlo.
package main
import "fmt"
func main() {
s1 := []int{1, 2, 3, 4}
fmt.Println(s1)
}
Producción :
[1 2 3 4]
Arreglo de literales compuestos en Go
Cuando un mapa se asigna a otro, los dos mapas comparten todos los componentes (subyacentes). Agregar elementos a (o eliminar elementos de) un mapa afectará al otro.
Si un sector se asigna a otro, los dos compartirán todos los componentes (subyacentes), al igual que las asignaciones de mapa. Sus longitudes relativas y capacidad son iguales.
Si la longitud o la capacidad de una rebanada cambia más tarde, el cambio no se refleja en la otra rebanada. Todos los elementos se copian de la matriz de origen a la matriz de destino cuando uno se asigna a otro.
Las dos matrices no comparten elementos.
package main
import "fmt"
func main() {
m0 := map[int]int{0: 2, 1: 3, 2: 4}
m1 := m0
m1[0] = 4
fmt.Println(m0, m1)
s0 := []int{5, 6, 7}
s1 := s0
s1[0] = 4
fmt.Println(s0, s1)
a0 := [...]int{5, 6, 7}
a1 := a0
a1[0] = 4
fmt.Println(a0, a1)
}
Producción :
map[0:4 1:3 2:4] map[0:4 1:3 2:4]
[4 6 7] [4 6 7]
[5 6 7] [4 6 7]