Sobes.tech
Junior

Ce tipuri de date există în Go?

sobes.tech AI

Răspuns de la AI

În Go există patru categorii de tipuri de date:

  1. Tipuri de bază (Basic types) - predefinite de compilator.

    • Booleene: bool
    • Numerice:
      • Numere întregi: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Numere în virgulă mobilă: float32, float64
      • Numere complexe: complex64, complex128
    • Șiruri de caractere: string
  2. Tipuri agregate (Aggregate types) - colecții de dimensiune fixă.

    • Arrays: [n]T (unde n este dimensiunea, T este tipul elementelor)
    • Structuri: struct {} (colecție de câmpuri denumite de diferite tipuri)
  3. Tipuri de referință (Reference types) - tipuri de referință, transmise prin referință, stochează un pointer către datele de bază.

    • Slices: []T (array dinamic, bazat pe un array)
    • Hărți (Maps): map[K]V (colecție de perechi cheie-valoare)
    • Poinți: *T (stochează adresa unei variabile)
    • Canale: chan T, chan<- T, <-chan T (pentru sincronizare și comunicare între goroutines)
    • Funcții: func(...) (...) (tipul este semnătura funcției)
  4. Tipuri de interfață (Interface types) - definesc un set de semnături de metode, implementate de tipurile de date.

    • Interfețe: interface{} (interfață goală), interface{ methodName(...) ... }

Exemple:

// Tipuri de bază
var isTrue bool = true
var age int = 30
var price float64 = 19.99
var name string = "Go Gopher"

// Tipuri agregate
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Array
type Person struct { // Structură
    Name string
    Age  int
}
var p Person = Person{Name: "Alice", Age: 25}

// Tipuri de referință
var slice []int = []int{1, 2, 3}           // Slice
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Hartă
var ptr *int = &age                     // Pointer
var dataChan chan int = make(chan int)  // Canal
var myFunc func(int) int = func(x int) int { return x * 2 } // Funcție

// Tipuri de interfață
var i interface{} = "anything" // Interfață goală
type Shape interface { // Interfață
    Area() float64
}