Tipos de datos en Go
A continuación se listan todos los tipos incorporados en Go, para referencia, para más detalles puedes visitar Manual de referencia-Tipos.
Tipo booleano
El tipo booleano solo tiene valores verdadero y falso.
| Tipo | Descripción |
|---|---|
bool | true es valor verdadero, false es valor falso |
TIP
En Go, el entero 0 no representa el valor falso, y el entero diferente de cero tampoco representa el valor verdadero, es decir, los números no pueden sustituir a los valores booleanos en las evaluaciones lógicas, son tipos completamente diferentes.
Tipos enteros
Go asigna diferentes tipos para enteros de diferentes bits, principalmente divididos en enteros sin signo y enteros con signo.
| Número | Tipo y descripción |
|---|---|
uint8 | Entero sin signo de 8 bits |
uint16 | Entero sin signo de 16 bits |
uint32 | Entero sin signo de 32 bits |
uint64 | Entero sin signo de 64 bits |
int8 | Entero con signo de 8 bits |
int16 | Entero con signo de 16 bits |
int32 | Entero con signo de 32 bits |
int64 | Entero con signo de 64 bits |
uint | Entero sin signo, al menos 32 bits |
int | Entero, al menos 32 bits |
uintptr | Equivalente al entero sin signo de 64 bits, pero especializado para almacenar operaciones de punteros, usado para almacenar direcciones de puntero. |
Tipos de punto flotante
Números de punto flotante IEEE-754, principalmente divididos en números de punto flotante de precisión simple y de precisión doble.
| Tipo | Tipo y descripción |
|---|---|
float32 | Número de punto flotante IEEE-754 de 32 bits |
float64 | Número de punto flotante IEEE-754 de 64 bits |
Tipos de números complejos
| Tipo | Descripción |
|---|---|
complex128 | Números reales e imaginarios de 64 bits |
complex64 | Números reales e imaginarios de 32 bits |
Tipos de caracteres
El lenguaje Go es completamente compatible con UTF-8
| Tipo | Descripción |
|---|---|
byte | Equivalente a uint8, puede expresar caracteres ANSCII |
rune | Equivalente a int32, puede expresar caracteres Unicode |
string | Una cadena es una secuencia de bytes, se puede convertir al tipo []byte es decir slice de bytes |
Tipos derivados
| Tipo | Ejemplo |
|---|---|
| Array | [5]int, array de enteros de longitud 5 |
| Slice | []float64, slice de números de punto flotante de 64 bits |
| Mapa | map[string]int, mapa con claves de tipo string y valores de tipo entero |
| Estructura | type Gopher struct{}, estructura Gopher |
| Puntero | *int, un puntero a entero. |
| Función | type f func(), un tipo de función sin parámetros ni valor de retorno |
| Interfaz | type Gopher interface{}, interfaz Gopher |
| Canal | chan int, canal de enteros |
Valor cero
En la documentación oficial el valor cero se llama zero value, el valor cero no es solo el número cero literalmente, sino que es más preciso llamarlo valor vacío o valor por defecto de un tipo.
| Tipo | Valor cero |
|---|---|
| Tipos numéricos | 0 |
| Tipo booleano | false |
| Tipo cadena | "" |
| Array | Colección de valores cero del tipo correspondiente de longitud fija |
| Estructura | Estructura con todos los campos internos en valor cero |
| Slice, mapa, función, interfaz, canal, puntero | nil |
nil
nil es similar a none o null en otros lenguajes, pero no es equivalente. nil es solo el valor cero de algunos tipos de referencia, y no pertenece a ningún tipo, se puede ver en el código fuente que nil es solo una variable.
var nil TypeY una sentencia como nil == nil no puede compilar.
