Sobes.tech
Junior

Quels sont les types de données en Go?

sobes.tech IA

Réponse de l'IA

Il existe quatre catégories de types de données en Go:

  1. Types de base (Basic types) - prédéfinis par le compilateur.

    • Booléens : bool
    • Numériques :
      • Entiers : int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Flottants : float32, float64
      • Complexes : complex64, complex128
    • Chaînes : string
  2. Types agrégés (Aggregate types) - collections de taille fixe.

    • Tableaux : [n]T (où n est la taille, T est le type des éléments)
    • Structures : struct {} (collection de champs nommés de types différents)
  3. Types de référence (Reference types) - types de référence, passés par référence, stockent un pointeur vers les données de base.

    • Slices : []T (tableau dynamique, basé sur un tableau)
    • Maps : map[K]V (collection de paires clé-valeur)
    • Pointeurs : *T (stockent l'adresse d'une variable)
    • Canaux : chan T, chan<- T, <-chan T (pour la synchronisation et la communication entre goroutines)
    • Fonctions : func(...) (...) (le type est la signature de la fonction)
  4. Types d'interface (Interface types) - définissent un ensemble de signatures de méthodes que les types de données implémentent.

    • Interfaces : interface{} (interface vide), interface{ methodName(...) ... }

Exemples :

// Types de base
var isTrue bool = true
var age int = 30
var price float64 = 19.99
var name string = "Go Gopher"

// Types agrégés
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Tableau
type Person struct { // Structure
    Name string
    Age  int
}
var p Person = Person{Name: "Alice", Age: 25}

// Types de référence
var slice []int = []int{1, 2, 3}           // Slice
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Carte
var ptr *int = &age                     // Pointeur
var dataChan chan int = make(chan int)  // Canal
var myFunc func(int) int = func(x int) int { return x * 2 } // Fonction

// Types d'interface
var i interface{} = "anything" // Interface vide
type Shape interface { // Interface
    Area() float64
}