Junior
Quais são os tipos de dados existentes em Go?
sobes.tech IA
Resposta da IA
Existem quatro categorias de tipos de dados em Go:
-
Tipos básicos (Basic types) - predefinidos pelo compilador.
- Booleanos:
bool - Numéricos:
- Inteiros:
int,int8,int16,int32,int64,uint,uint8(byte),uint16,uint32,uint64,uintptr - De ponto flutuante:
float32,float64 - Complexos:
complex64,complex128
- Inteiros:
- Strings:
string
- Booleanos:
-
Tipos compostos (Aggregate types) - coleções de tamanho fixo.
- Arrays:
[n]T(ondené o tamanho,Té o tipo dos elementos) - Estruturas:
struct {}(coleção de campos nomeados de diferentes tipos)
- Arrays:
-
Tipos de referência (Reference types) - tipos de referência, passados por referência, armazenam um ponteiro para os dados base.
- Slices:
[]T(array dinâmico, baseado em um array) - Mapas:
map[K]V(coleção de pares chave-valor) - Ponteiros:
*T(armazenam o endereço de uma variável) - Canais:
chan T,chan<- T,<-chan T(para sincronização e comunicação entre goroutines) - Funções:
func(...) (...)(o tipo é a assinatura da função)
- Slices:
-
Tipos de interface (Interface types) - definem um conjunto de assinaturas de métodos que os tipos de dados implementam.
- Interfaces:
interface{}(interface vazia),interface{ methodName(...) ... }
- Interfaces:
Exemplos:
// Tipos básicos
var isTrue bool = true
var age int = 30
var price float64 = 19.99
var name string = "Go Gopher"
// Tipos compostos
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Array
type Person struct { // Estrutura
Name string
Age int
}
var p Person = Person{Name: "Alice", Age: 25}
// Tipos de referência
var slice []int = []int{1, 2, 3} // Slice
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Mapa
var ptr *int = &age // Ponteiro
var dataChan chan int = make(chan int) // Canal
var myFunc func(int) int = func(x int) int { return x * 2 } // Função
// Tipos de interface
var i interface{} = "anything" // Interface vazia
type Shape interface { // Interface
Area() float64
}