Upgrade to Pro — share decks privately, control downloads, hide ads and more …

À la découverte de Go

À la découverte de Go

Go (ou Golang), le langage de programmation développé par Google, ça te dit quelque chose ?
Construis des programmes sécurisés et scalables avec Go. Simple, efficace, facile à apprendre, et en bonus open-source!

Comment ?
Go a été conçu pour résoudre les défis de la programmation dans un monde de plus en plus connecté au sein de Google. Il offre des moyens simples et rapides de construire des applications performantes, et est utilisé par de nombreuses entreprises tech comme Uber et Netflix, ainsi que par des communautés open source notamment dans le cloud natif.

Donia Chaiehloudj

February 17, 2023
Tweet

More Decks by Donia Chaiehloudj

Other Decks in Technology

Transcript

  1. À la découverte
    de Go
    16 Février 2023

    View full-size slide

  2. Donia Chaiehloudj
    www.containerdays.io #CDS22
    Organisatrice du GDG Sophia-Antipolis
    Membre WHAT06
    Women Techmakers Ambassador
    @doniacld
    Software Backend Engineer - 6 ans de Go

    View full-size slide

  3. C’est quoi Go?
    Un langage de programmation:
    ● simple
    ● efficace
    ● open-source
    ● sympa
    ● compilé
    ● typé
    http://golang.org
    Go = Golang
    Représenté par sa mascotte: un Gopher

    View full-size slide

  4. Un peu d’histoire
    Go a été désigné par Google pour résoudre des problèmes internes à Google.
    Google a de gros problèmes.

    View full-size slide

  5. Pourquoi Go ?
    ● éliminer les ralentissements
    ● améliorer la productivité
    ● maintenir/améliorer la capacité d’accepter un grand
    nombre de requêtes
    Go was designed by and for people who write—and read and debug and
    maintain—large software systems.
    Go's purpose is not research into programming language design.
    Go's purpose is to make its designers' programming lives better.
    https://go.dev/talks/2012/splash.slide#8
    Go at Google, SPLASH, Tucson, Oct 25, 2012, Rob Pike

    View full-size slide

  6. Que faire avec Go ?
    source: https://go.dev/blog/survey2022-q2-results
    ● API/RPC services
    ● CLI
    ● Outils de déploiements

    View full-size slide

  7. Go est utilisé par qui ?
    ● Google
    ● Microsoft
    ● Meta
    ● Dell
    ● HP
    ● Intel
    ● SAP
    ● IBM
    ● Walmart
    ● RedHat
    source: https://go.dev/blog/survey2022-q2-results

    View full-size slide

  8. Exemple d’un fichier en Go: main.go
    // Entrypoint of the program
    package main
    import "fmt"
    func main() {
    fmt.Println("Hello Le Wagon Nice")
    }
    Commenter avec ‘//’ ou ‘/* */‘

    View full-size slide

  9. Exemple d’un fichier en Go: main.go
    // Entrypoint of the program
    package main
    import "fmt"
    func main() {
    fmt.Println("Hello Le Wagon Nice")
    }
    Nom du package
    Commenter avec ‘//’

    View full-size slide

  10. Exemple d’un fichier en Go: main.go
    // Entrypoint of the program
    package main
    import "fmt"
    func main() {
    fmt.Println("Hello Le Wagon Nice")
    }
    Nom du package
    Les imports des dépendances
    Commenter avec ‘//’

    View full-size slide

  11. Exemple d’un fichier en Go: main.go
    // Entrypoint of the program
    package main
    import "fmt"
    func main() {
    fmt.Println("Hello Le Wagon Nice")
    }
    Nom du package
    Les imports des dépendances
    Déclaration d’une fonction: main
    Commenter avec ‘//’

    View full-size slide

  12. Exemple d’un fichier en Go: main.go
    // Entrypoint of the program
    package main
    import "fmt"
    func main() {
    fmt.Println("Hello Le Wagon Nice")
    }
    Nom du package
    Les imports des dépendances
    Déclaration d’une fonction: main
    Corps de la fonction
    Commenter avec ‘//’

    View full-size slide

  13. Exemple d’un fichier en Go: main.go
    // Entrypoint of the program
    package main
    import "fmt"
    func main() {
    fmt.Println("Hello Le Wagon Nice")
    }
    Nom du package
    Les imports des dépendances
    Déclaration d’une fonction: main
    Corps de la fonction
    Commenter avec ‘//’

    View full-size slide

  14. var delayMinutes int // -8 (signed integer)
    var wagonNumber uint // 8 (unsigned integer)
    var temperature float32 // 21.5 (decimal)
    Number
    var isPassenger bool // false
    Bool
    Types de base
    var wagon string // “W46”
    String

    View full-size slide

  15. train := "TGV"
    Variable avec initialisation
    Variables
    var =
    :=
    var train string = "TGV"
    Variable avec initialisation courte
    Plusieurs variables avec initialisation et même type
    var , = ,
    var train1, train2 string = "TGV1", "TGV2"

    View full-size slide

  16. // string
    const WagonBar = "Bar"
    // enumeration
    const (
    debug = iota // 0
    info // 1
    fatal // 2
    error // 3
    )
    Constantes
    const =
    const (
    = iota


    ...
    )

    View full-size slide

  17. Structures
    type struct {


    }
    Création
    type Wagon struct {
    Kind string
    Number int
    }
    wagonBar := Wagon{Kind: "Bar" , Number: 4} // explicit fields
    wagonBar := Wagon{"Bar", 4} // omit fields
    // wagonBar.Kind = "Bar" & wagonBar.Number = 4
    := {: , : }
    Déclaration de la variable

    View full-size slide

  18. func register(passenger string, place int)
    Paramètres
    Fonctions
    func getWagonNumber() int
    Plusieurs valeurs retournées
    func ( , )
    func ()
    func getWagonNumber() (int, error)
    func () (, )
    Une valeur retournée
    error est un type en Go

    View full-size slide

  19. Outils
    go build .
    Compile le code du package et ses dépendances, génère un fichier exécutable
    go run $PKG
    Compile le code du package $PKG et ses dépendances & lance le programme
    go test $PKG
    Lance les tests du package $PKG
    go fmt $PKG
    Résout les problèmes de format du package $PKG
    source: https://go-talks.appspot.com/github.com/davecheney/canberra-gophers/introduction-to-go.slide#46

    View full-size slide

  20. Demo time
    https://github.com/doniacld/go-le-wagon

    View full-size slide

  21. Not covered
    Beaucoup de choses!
    ● Flow Statements (if, else, if else, for)
    ● Concurrence (goroutines, channels)
    ● ...

    View full-size slide

  22. La communauté Go
    Women Who Go GopherCon Europe London Gophers GoBridge

    View full-size slide

  23. Par où commencer?
    1. Go Tour: https://go.dev/tour/
    2. Go Playground: https://go.dev/play/
    3. Documentation officielle: https://pkg.go.dev/std

    View full-size slide

  24. Apprends Go à ton rythme
    avec des projets de poche
    35% avec le code
    mtplewagon23
    http://mng.bz/91Wx
    @doniacld
    Donia Chaiehloudj
    Crée ton propre Gopher
    https://gopherize.me/
    https://hachyderm.io/@doniacld
    www.doniacld.com

    donia-chaiehloudj
    🚂
    https://github.com/doniacld/go-le-wagon

    View full-size slide

  25. Apprends Go à ton rythme
    avec des projets de poche
    35% avec le code
    mtplewagon23
    http://mng.bz/91Wx
    🚂 https://tinyurl.com/go-le-wagon
    📚 🎁 QUIZZ

    View full-size slide