Ir a aprender idiomas de tipo 4-array

3. Ir a tipos de datos de idioma

En el último artículo, entendimos los tipos de datos básicos del lenguaje Go, y ahora presentaremos los tipos de matriz.

3.2 Matriz

En el lenguaje Go, una matriz se denomina matriz, que es una secuencia compuesta por varios elementos del mismo tipo.

3.2.1 Notación de tipo

Un tipo de matriz con una longitud de ny un tipo de elemento de T se declara de la siguiente manera:

[n]T

Nota : La longitud de la matriz es parte del tipo de matriz. Siempre que las longitudes de la matriz en la declaración de tipo sean diferentes, incluso si los tipos de elementos de los dos tipos de matriz son los mismos, siguen siendo tipos diferentes. Por ejemplo, los tipos de matriz [2] cadena y [3] cadena son dos tipos diferentes, aunque sus tipos de elementos son ambos cadenas. La longitud de todas las matrices de este tipo es fija.

La longitud identificada en la declaración del tipo de matriz se puede representar mediante un literal entero no negativo o una expresión (esta expresión debe ser un valor no negativo de tipo int), por ejemplo:

[2*3+4]byte

Este literal de tipo representa un tipo de matriz cuyo tipo de elemento es byte.

El tipo de elemento en la declaración de tipo de matriz puede ser cualquier tipo de datos de lenguaje Go válido (tipo de datos predefinido, tipo de datos compuestos, tipo de datos personalizados o literal de tipo). P.ej:

[5]struct{ name, address  string} // ”struct {…}”是用于自定义匿名结构体类型的类型字面量

Lo anterior nos recuerda que aunque el tipo de elemento de una matriz solo puede ser un tipo de datos único, debido a que este tipo de datos único puede ser un tipo de datos compuestos, es posible usar una matriz para construir estructuras de datos más diversas en lugar de simplemente tratarlo. como que contiene varios Una lista ordenada de elementos del mismo tipo.

3.2.2 Notación de valor

El valor del tipo de matriz (denominado valor de matriz) se puede representar mediante un literal compuesto. P.ej:

[6]string{"Go", "Python", "Java", "C", "C++", "PHP"}

Este literal representa un valor de matriz con una longitud de 6 y un tipo de elemento de cadena, y ya contiene 6 valores de elemento.
También podemos especificar el valor de índice del valor del elemento al escribir el literal compuesto anterior. P.ej:

[6]string{0: "Go", 1: "Python", 2: "Java", 3: "C", 4: "C++", 5: "PHP"}

Este literal también refleja la relación correspondiente entre el valor de cada elemento y el valor del índice de forma predeterminada.
Esta adición literal de valores de índice también puede interrumpir la correspondencia predeterminada, por ejemplo:

[6]string{2: "Go", 1: "Python", 5: "Java", 4: "C", 3: "C++", 0: "PHP"}

O bien, solo especifique explícitamente el valor de índice de una parte del valor del elemento, por ejemplo:

[6]string{5: "Go", 0: "Python", "Java", "C", "C++", 4: "PHP"}

Como se indicó anteriormente, los valores de índice implícitos de "Java", "C" y "C ++"
se especifican como 1, 2 y 3 de forma flexible, pero aún deben cumplirse las dos condiciones siguientes:

  1. El valor de índice especificado debe estar dentro del rango válido reflejado por el tipo de matriz, es decir, mayor o igual a 0 y menor que la longitud declarada en el tipo de matriz. De manera similar, el valor de índice que especificamos no puede hacer que el valor de índice del valor del elemento subsiguiente exceda el rango.
  2. El valor de índice especificado no se puede repetir con el valor de índice de otros valores de elementos, independientemente de si los valores de otros elementos son implícitamente correspondientes o explícitamente correspondientes.

El número entero entre corchetes representa la longitud del valor de la matriz y debe ser mayor o igual que el número real de valores de elementos entre corchetes. P.ej:

[8]string{"Go", "Python", "Java", "C", "C++", "PHP"}

El valor de la matriz anterior es equivalente al siguiente literal compuesto:

[8]string{0: "Go", 1: "Python", 2: "Java", 3: "C", 4: "C++", 5: "PHP", 6: "", 7: ""}

Tampoco podemos especificar la longitud del valor de la matriz, pero dejar que el número real de valores de los elementos determine, por ejemplo:

[...]string{"Go", "Python", "Java", "C", "C++", "PHP"}

3.2.3 Propiedades y operaciones básicas

El tipo de matriz es un tipo de valor. Una variable de tipo de matriz tendrá un valor no nulo después de ser declarada. Este valor no nulo contiene el número de valores de elemento consistente con la longitud declarada en su tipo, y cada valor de elemento en él es el valor cero del tipo de elemento de su tipo.

En el lenguaje Go, una matriz es un valor. La variable de tipo de matriz representa la matriz completa, a diferencia de la matriz de lenguaje C que representa un puntero al valor del primer elemento de la matriz. Por lo tanto, cuando asignamos un valor de matriz a una variable o lo pasamos a una función, se crea implícitamente una copia del valor de matriz. Para evitar este tipo de copia de seguridad implícita, podemos obtener un puntero al valor de la matriz a través del operador de dirección y usar este puntero en operaciones de asignación de variables y operaciones de paso de parámetros de función.

Utilice la función incorporada de Go language len para obtener la longitud del valor de la matriz, por ejemplo:

len([...]string{"Go", "Python", "Java", "C", "C++", "PHP"})

Acceda a cada elemento de la matriz por valor de índice, por ejemplo:

[...]string{"Go", "Python", "Java", "C", "C++", "PHP"}[0]//值是"Go"
[...]string{"Go", "Python", "Java", "C", "C++", "PHP"}[5]//值是"PHP"

Cambie el elemento correspondiente por valor de índice, por ejemplo:

// := 表示声明一个变量的同时对这个变量进行赋值。
array1 := [6]string{"Go", "Python", "Java", "C", "C++", "PHP"}//数组值赋给变量array1
array1[1] = "Swift" //与索引值1对应的元素修改为字符串类型值Swift

Después de ejecutar la declaración anterior, el valor de array1:

[6]string{"Go", "Python", "Java", "C", "C++", "PHP"}

Nota : Si el valor de matriz1 anterior es nulo , el valor del índice provocará un pánico en tiempo de ejecución cuando se evalúe. Lo mismo ocurre cuando el valor del índice no está en el rango válido.

Supongo que te gusta

Origin blog.csdn.net/u012855229/article/details/115367145
Recomendado
Clasificación