Ir a registro de aprendizaje

Resumen de la operación de adición del segmento Go : https://segmentfault.com/a/1190000020170529

 

1. La diferencia entre matriz y rebanada

  1. Al declarar una matriz, la longitud de la matriz o ...,
  2. Al declarar un segmento, cuando el paréntesis está vacío como parámetro de función, lo que pasa el arreglo es una copia del arreglo, pero lo que pasa el segmento es un puntero.

La matriz de tipo de matriz es una matriz de longitud fija, la longitud de la matriz debe determinarse antes de su uso

Características de la matriz golang:

  • Las matrices en golang son tipos de valor, es decir, si asigna una matriz a otra matriz, entonces la matriz completa se copia realmente. Si la matriz en golang se usa como un parámetro de función, entonces en realidad se pasa El parámetro de is una copia de una matriz, y la longitud de la matriz de punteros, que no es una matriz, también es parte del tipo, lo que significa que [10] int y [20] int no son lo mismo.
  • El segmento de tipo segmento es un tipo de referencia, que es un puntero dinámico al segmento de matriz. Un segmento es indeterminado y siempre apunta a la estructura de datos de la matriz de matriz subyacente.

2 、

<1>, dos formas new(T)y &T{}equivalente completo: ambos asignan un T cero y devuelven un puntero a la memoria asignada. La única diferencia es que & T {} no funciona para tipos integrados como int , solo puede ejecutarlo new(int).

<2>, struct devuelve una estructura, new devuelve un puntero

          1.new (T) crea una instancia de tipo T sin ningún dato y devuelve el puntero de la instancia;
         2.make (T, args) solo puede crear sector, mapa y canal, y devuelve un valor inicial args (no cero) instancia de tipo T , sin puntero.

Supongo que te gusta

Origin blog.csdn.net/yu1336199790/article/details/109027651
Recomendado
Clasificación