Structures

Structures #

// Les _structures_ en Go sont des collections de champs
// typés.
// Elles sont utiles pour regrouper ensemble les données.

package main

import "fmt"

// Cette structure `person` a des champs `name` et `age`.
type person struct {
    name string
    age  int
}

func main() {

    // Cette syntaxe crée une nouvelle structure.
    fmt.Println(person{"Bob", 20})

    // On peut nommer les champs lorsqu'on initialise
    //  une structure
    fmt.Println(person{name: "Alice", age: 30})

    // Les champs non spécifiés seront de valeur nulle.
    fmt.Println(person{name: "Fred"})

    // Un préfixe `&` fournit un pointeur sur la structure.
    fmt.Println(&person{name: "Ann", age: 40})

    // On accède aux champs de la structure avec un point
    s := person{name: "Sean", age: 50}
    fmt.Println(s.name)

    // On peut aussi utiliser le point avec des pointeurs
    // de structure : les pointeurs sont automatiquement déréférencés.
    sp := &s
    fmt.Println(sp.age)

    // Les structures sont mutables.
    sp.age = 51
    fmt.Println(sp.age)
}
$ go run structs.go
{Bob 20}
{Alice 30}
{Fred 0}
&{Ann 40}
Sean
50
51