Junior
Jakie są typy danych w Go?
sobes.tech AI
Odpowiedź od AI
W języku Go istnieją cztery kategorie typów danych:
-
Typy podstawowe (Basic types) - zdefiniowane przez kompilator.
- Typy logiczne:
bool - Typy numeryczne:
- Liczby całkowite:
int,int8,int16,int32,int64,uint,uint8(byte),uint16,uint32,uint64,uintptr - Liczby zmiennoprzecinkowe:
float32,float64 - Liczby zespolone:
complex64,complex128
- Liczby całkowite:
- Łańcuchy znaków:
string
- Typy logiczne:
-
Typy złożone (Aggregate types) - kolekcje o stałym rozmiarze.
- Tablice:
[n]T(gdziento rozmiar,Tto typ elementów) - Struktury:
struct {}(kolekcja nazwanych pól różnych typów)
- Tablice:
-
Typy referencyjne (Reference types) - typy odwołań, przekazywane przez odwołanie, przechowują wskaźnik do danych podstawowych.
- Slicery:
[]T(dynamiczna tablica, oparta na tablicy) - Mapy:
map[K]V(kolekcja par klucz-wartość) - Wskaźniki:
*T(przechowują adres zmiennej) - Kanały:
chan T,chan<- T,<-chan T(do synchronizacji i komunikacji między gorutynami) - Funkcje:
func(...) (...)(typem jest sygnatura funkcji)
- Slicery:
-
Typy interfejsowe (Interface types) - definiują zestaw sygnatur metod, które implementują typy danych.
- Interfejsy:
interface{}(pusty interfejs),interface{ methodName(...) ... }
- Interfejsy:
Przykłady:
// Typy podstawowe
var isTrue bool = true
var age int = 30
var price float64 = 19.99
var name string = "Go Gopher"
// Typy złożone
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Tablica
type Person struct { // Struktura
Name string
Age int
}
var p Person = Person{Name: "Alice", Age: 25}
// Typy referencyjne
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 // Wskaźnik
var dataChan chan int = make(chan int) // Kanał
var myFunc func(int) int = func(x int) int { return x * 2 } // Funkcja
// Typy interfejsowe
var i interface{} = "anything" // Pusty interfejs
type Shape interface { // Interfejs
Area() float64
}