Go Structures intégrées


Exemple

Comme une structure est aussi un type de données, elle peut être utilisée comme un champ anonyme, la structure externe peut accéder directement aux champs de la structure intégrée même si la structure provient d’un package différent. Ce comportement permet de dériver tout ou partie de votre implémentation à partir d'un autre type ou d'un ensemble de types.

package main

type Admin struct {
    Username, Password string
}

type User struct {
    ID uint64
    FullName, Email string
    Admin // embedded struct
}

func main() {
    admin := Admin{
        "zola",
        "supersecretpassword",
    }

    user := User{
        1,
        "Zelalem Mekonen",
        "zola.mk.27@gmail.com",
        admin,
    }

    fmt.Println(admin) // {zola supersecretpassword}

    fmt.Println(user) // {1 Zelalem Mekonen zola.mk.27@gmail.com {zola supersecretpassword}}

    fmt.Println(user.Username) // zola

    fmt.Println(user.Password) // supersecretpassword
}