• Aide
  • Eurêkoi Eurêkoi

Livre

Le langage Go : les fondamentaux du langage

Résumé

Développé par Google depuis 2009, le langage Go est aujourd'hui open source. Ce guide explique les fondements du codage dans ce langage, revient sur les aspects peu développés par la documentation officielle et détaille les bonnes pratiques. Des ressources complémentaires sont accessibles en ligne.


  • Éditeur(s)
  • Date
    • DL 2020
  • Notes
    • La couv. porte en plus : "Les + en ligne"
    • La 4e de couv. porte en plus : "Le code source des exemples est disponible sur https://play.golang.org : chaque listing inclus comporte un URL permettant d'y accéder sur le playground et, dans la plupart des cas, de l'exécuter sans nécessiter d'installation locale de Go. Le site des Plus en ligne https://www.osinet.fr/go comporte divers compléments pour prolonger la durée de vie du livre au-delà de son contenu initial : articles, dossiers, errata, quiz, etc."
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (xx-372 p.) : ill. ; 25 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-10-080410-8
  • Indice
  • Quatrième de couverture
    • Le langage Go

      Les fondamentaux du langage

      Ce livre est destiné aux développeurs débutants en Go, mais connaissant déjà d'autres langages courants comme C, Java, JavaScript, PHP ou Python. Il leur permet d'être opérationnels avec le langage Go en quelques jours en transposant leurs connaissances, pour apprendre à créer des programmes à la fois économes en énergie et capables d'utiliser efficacement les machines multicoeurs.

      Avec plus de 150 listings à l'appui, il décrit :

      • les choix fondamentaux des créateurs du langage ;
      • les détails de sa syntaxe, depuis son soutien d'Unicode jusqu'à l'implémentation de ses structures de données natives ;
      • ses mécanismes de contrôle de flux et de traitement des erreurs ;
      • ses fonctions intégrées, y compris réflexion et méta- programmation ;
      • l'ensemble des mécanismes qu'il inclut pour la programmation concurrente ;
      • ses choix en matière d'organisation du code, des paquets aux modules en passant par les espaces de travail, le vendoring et les outils communautaires.

      Le texte couvre toutes les versions de Go 1.0 jusqu'à Go 1.14 et certaines des évolutions futures déjà annoncées.

      Les + en ligne

      Le code source des exemples est disponible sur htpps://play.golang.org : chaque listing inclus comporte un URL permettant d'y accéder sur le playground et, dans la plupart des cas, de l'exécuter sans nécessiter d'installation locale de Go.

      Le site des Plus en ligne https://www.osinet.fr/go comporte divers compléments pour prolonger la durée de vie du livre au-delà de son contenu initial : articles, dossiers, errata, quiz, etc.


  • Tables des matières
      • Le langage Go

      • Les fondamentaux du langage

      • Frédéric G. Marand

      • Dunod

      • Table des listingsXI
      • Avant-proposXV
      • 1 Introduction : pourquoi Go ?1
      • 1.1 La programmation « in the large »1
      • 1.1.1 L'équation des coûts logiciels2
      • 1.1.2 Impact sur la conception du language5
      • 1.2 Nouvelles architectures12
      • 1.3 En pratique14
      • 1.3.1 Simplicité14
      • 1.3.2 Rapidité15
      • 2 Syntaxe19
      • 2.1 Alphabet19
      • 2.1.1 Jeu de caractères19
      • 2.1.2 Encodage20
      • 2.1.3 Classes de caractères21
      • 2.2 L'héritage syntaxique de C21
      • 2.3 Identificateurs23
      • 2.3.1 Forme et identificateurs réservés23
      • 2.3.2 Visibilité25
      • 2.3.3 Comparaison26
      • 2.4 Opérateurs26
      • 2.4.1 Opérateurs et types de données26
      • 2.4.2 Règles de priorité28
      • 2.4.3 Opérateurs multiplicatifs30
      • 2.4.4 Opérateurs additifs31
      • 2.4.5 Dépassement de capacité31
      • 2.4.6 Opérateurs de comparaison32
      • 2.4.7 Opérateurs logiques34
      • 2.4.8 Opérateurs d'adresse35
      • 2.4.9 Opérateur réception36
      • 2.5 Ponctuation37
      • 2.5.1 Opérateurs, instructions et ponctuation37
      • 2.5.2 Ponctuation générale38
      • 2.5.3 Espaces et autre formatages38
      • 2.6 Mots-clefs40
      • 2.6.1 Mots-clefs des définitions de données40
      • 2.6.2 Mots-clefs des structures de contrôle41
      • 2.6.3 Mots-clefs des paquets42
      • 2.6.4 Mots-clefs secrets42
      • 3 Types élémentaires43
      • 3.1 Types simples43
      • 3.1.1 Liste des types simples43
      • 3.1.2 Entiers et caractères44
      • 3.1.3 Nombres flottants réels et complexes47
      • 3.1.4 Chaînes de caractères51
      • 3.2 Types pointeurs56
      • 3.2.1 Définition56
      • 3.2.2 Déclaration de types pointeurs57
      • 3.2.3 Littéraux pointeurs57
      • 3.2.4 Manipulation des pointeurs59
      • 3.3 Types fonctions63
      • 3.3.1 Définition63
      • 3.3.2 Déclaration de types fonctions63
      • 3.3.3 Déclaration de fonctions65
      • 3.3.4 Littéraux fonction65
      • 3.3.5 Code des fonctions66
      • 3.3.6 Manipulation des fonctions70
      • 3.3.7 Chaînage de retours multiples71
      • 3.4 Méthodes d'un type73
      • 3.4.1 Définition73
      • 3.4.2 Déclaration de méthodes74
      • 3.4.3 Jeu de méthodes d'un type74
      • 3.4.4 Méthodes et champs fonctions76
      • 3.4.5 Utilité des méthodes sur les types non-structure77
      • 3.4.6 Récepteur pointeur ou récepteur valeur80
      • 3.4.7 Invocation dynamique82
      • 3.5 Types interfaces85
      • 3.5.1 Définition85
      • 3.5.2 Déclaration de types interface86
      • 3.5.3 Valeurs de types interfaces89
      • 3.5.4 Le type interface { }91
      • 3.5.5 Manipulation des interfaces92
      • 3.5.6 Organisation des interfaces98
      • 3.6 Compatibilité de types100
      • 3.6.1 Identité de types100
      • 3.6.2 Affectabilité102
      • 3.6.3 Représentabilité des constantes105
      • 4 Types composites109
      • 4.1 Tableaux (array)109
      • 4.1.1 Définition109
      • 4.1.2 Déclaration de types tableaux110
      • 4.1.3 Littéraux tableaux111
      • 4.1.4 Manipulation des tableaux112
      • 4.2 Tranches (slice)114
      • 4.2.1 Définition114
      • 4.2.2 Déclaration de types tranche115
      • 4.2.3 Littéraux tranches116
      • 4.2.4 Manipulation des tranches116
      • 4.2.5 Les tranches comme paramètres120
      • 4.3 Cartes (map)122
      • 4.3.1 Définition122
      • 4.3.2 Déclaration de types cartes122
      • 4.3.3 Littéraux cartes122
      • 4.3.4 Manipulation des cartes123
      • 4.3.5 Les cartes comme paramètres125
      • 4.4 Structures (struct)126
      • 4.4.1 Définition126
      • 4.4.2 Déclaration de types structure127
      • 4.4.3 Champs intégrés et promotion129
      • 4.4.4 Étiquettes de champs131
      • 4.4.5 Littéraux structures132
      • 4.4.6 Manipulation des structures134
      • 4.5 Types canaux (chan)137
      • 4.5.1 Définition137
      • 4.5.2 Déclaration de types canaux138
      • 4.5.3 Valeurs de types canaux139
      • 4.5.4 Manipulation des canaux139
      • 4.5.5 Extensions145
      • 5 Données147
      • 5.1 Variables147
      • 5.1.1 Variables et types147
      • 5.1.2 Déclaration des variables148
      • 5.1.3 Utilisation des variables150
      • 5.1.4 Quasi-variables : paramètres et retours150
      • 5.1.5 Variables anonymes151
      • 5.2 Constantes152
      • 5.2.1 Constantes Go et autres langages152
      • 5.2.2 Valeurs constantes152
      • 5.2.3 Constantes et types154
      • 5.2.4 Précision des valeurs constantes155
      • 5.2.5 Déclaration des constantes156
      • 5.3 Valeurs et types159
      • 5.4 Valeurs vierges162
      • 5.4.1 Définition162
      • 5.4.2 Valeurs vierges des types de données163
      • 5.4.3 Rendre la valeur vierge utile164
      • 5.5 « nil »165
      • 5.5.1 Définition165
      • 5.5.2 nil pour les types interfaces166
      • 5.5.3 nil comme récepteur166
      • 5.5.4 Une erreur à un milliard de dollars ?170
      • 5.6 Fin de vie170
      • 5.6.1 Destructeurs170
      • 5.6.2 Finaliseurs171
      • 5.7 Réflexion et méta-programmation174
      • 5.7.1 Définition174
      • 5.7.2 Lecture d'étiquettes de structure174
      • 5.7.3 Fonctions génériques177
      • 5.7.4 API de réflexion178
      • 5.7.5 Conclusion181
      • 6 Expressions183
      • 6.1 Opérateurs et opérandes183
      • 6.2 Littéraux184
      • 6.2.1 Règles générales184
      • 6.2.2 Littéraux tableaux, tranches, et cartes184
      • 6.2.3 Littéraux structures186
      • 6.3 Qualification des identificateurs187
      • 6.4 Expressions primaires188
      • 6.5 Sélection189
      • 6.6 Expressions de méthodes193
      • 6.7 Valeurs de méthodes194
      • 6.8 Indexation196
      • 6.9 Tranchage (découpage)198
      • 6.9.1 Définition198
      • 6.9.2 Notation199
      • 6.9.3 Contraintes et résultats200
      • 6.9.4 Implantation mémoire201
      • 6.10 Assertions de types204
      • 6.10.1 Définition204
      • 6.10.2 Notation205
      • 6.10.3 Résultats205
      • 6.11 Appels de fonctions/méthodes206
      • 6.11.1 Définition et notation206
      • 6.11.2 Arguments et résultats208
      • 6.11.3 Chaînage d'appels209
      • 6.12 Conversions211
      • 6.12.1 Définition211
      • 6.12.2 Notation212
      • 6.12.3 Possibilités et limites214
      • 6.12.4 Conversions numériques216
      • 6.12.5 Conversions de chaînes217
      • 6.12.6 Conversions d'interfaces218
      • 6.13 Règles communes221
      • 6.13.1 Expressions constantes221
      • 6.13.2 Ordre d'évaluation222
      • 7 Instructions225
      • 7.1 Organisation de l'exécution225
      • 7.1.1 Instructions terminales225
      • 7.1.2 Instructions simples227
      • 7.2 Instructions simples228
      • 7.2.1 L'instruction vide228
      • 7.2.2 Expressions228
      • 7.2.3 Émission sur un canal230
      • 7.2.4 Incrémentation / décrémentation230
      • 7.2.5 Affectation231
      • 7.2.6 Déclaration courte de variable234
      • 7.3 Instructions générales237
      • 7.3.1 Déclaration237
      • 7.3.2 Instruction étiquetée240
      • 7.3.3 Bloc241
      • 7.3.4 Si - alors - sinon : if - else241
      • 7.3.5 Commutateur d'expression switch v244
      • 7.3.6 Commutateur de type switch v. (type)248
      • 7.3.7 Sélecteur de communication select251
      • 7.3.8 for, la boucle à tout faire257
      • 7.3.9 break, l'interrupteur263
      • 7.3.10 continue, le raccourci263
      • 7.3.11 Déroutement goto265
      • 7.4 Instructions liées aux fonctions268
      • 7.4.1 Retour de fonction avec return268
      • 7.4.2 Exécution concurrente avec go270
      • 7.4.3 Code terminal avec defer272
      • 8 Builtins ; fonctions intégrées et erreurs275
      • 8.1 Affichage : print et println276
      • 8.2 Convertisseurs complexes277
      • 8.3 Allocation : make et new278
      • 8.4 Taille et capacité : len, cap280
      • 8.5 Manipulation des tranches : append, copy282
      • 8.6 Destruction d'éléments de carte : delete282
      • 8.7 Fermeture de canaux par close282
      • 8.8 Traitement des erreurs avec l'interface error283
      • 8.8.1 Définition283
      • 8.8.2 Le modèle Go de gestion des erreurs283
      • 8.8.3 Création d'erreurs spécifiques285
      • 8.8.4 Emballage et déballage d'erreurs286
      • 8.8.5 L'expérimentation check / handle / try288
      • 8.9 Situations de panique : panic et recover289
      • 8.9.1 Définition289
      • 8.9.2 Paniques d'exécution290
      • 8.9.3 Utilisation appropriée292
      • 9 Organisation du code en paquets295
      • 9.1 Programmes et paquets295
      • 9.2 La clause package297
      • 9.2.1 Définition297
      • 9.2.2 Clause paquets et compilation par fichier297
      • 9.3 Répertoire d'un paquet298
      • 9.4 Fichiers d'un paquet298
      • 9.4.1 Répartition du code dans les fichiers298
      • 9.4.2 Conventions de nommage299
      • 9.5 Programmes exécutables et greffons : le paquet main300
      • 9.6 Organisation des paquets303
      • 9.6.1 Hiérarchisation des paquets303
      • 9.6.2 Organisation des paquets d'un projet304
      • 9.6.3 Réduction de la surface d'API avec les paquets internal304
      • 9.7 Déclaration d'importation import305
      • 9.8 Initialisation308
      • 9.9 Chemins d'importation310
      • 9.9.1 Notion de workspace et GOPATH310
      • 9.9.2 Bibliothèque standard et GOROOT312
      • 9.9.3 Paquets distants avec go get312
      • 9.9.4 Organisation des paquets en mode GOPATH317
      • 9.10 Modules VGO319
      • 9.10.1 Inconvénients du mécanisme des espaces de travail320
      • 9.10.2 Solutions antérieures aux modules320
      • 9.10.3 Des objectifs du projet Go aux modules VGO322
      • 9.10.4 Fonctionnement324
      • 9.10.5 Utilisation au quotidien329
      • 10 Programmation concurrente337
      • 10.1 Concurrence et parallélisme337
      • 10.2 Coroutines338
      • 10.2.1 Définition338
      • 10.2.2 Utilisation339
      • 10.2.3 API340
      • 10.2.4 Bonnes pratiques344
      • 10.3 Contextes345
      • 10.3.1 Définition345
      • 10.3.2 Utilisation346
      • 10.3.3 Exemple : annulation de handler HTTP348
      • 10.4 Primitives de synchronisation : le paquet sync351
      • 10.4.1 Groupe des tâches : sync. WaitGroup352
      • 10.4.2 Exécution unique : Once354
      • 10.4.3 Exclusion mutuelle : Mutex / RWMutex355
      • 10.4.4 Allocations réutilisées : Pool357
      • 10.4.5 Tableaux associatifs : Map358
      • 10.4.6 Moniteurs : Cond359
      • 10.5 Bas niveau : le paquet sync/atomic361
      • 10.6 Mécanismes spécialisés : le paquet golang.org/x/sync362
      • 10.6.1 Sémaphores ; le paquet semaphore362
      • 10.6.2 Regroupement d'erreurs et annulation : le paquet errgroup363
      • 10.6.3 Dédoublonnage d'exécution : le paquet singleflight364
      • 10.6.4 Cartes concurrentes : le paquet syncmap365
      • 10.7 Situations de compétition : le race detector366
      • Index367

  • Origine de la notice:
    • BPI
  • Disponible - 681.25 MAR

    Etage 3 - Informatique - Informatique