FAQ GoConsultez toutes les FAQ
Nombre d'auteurs : 6, nombre de questions : 45, dernière mise à jour : 20 août 2015 Ajouter une question
Cette FAQ a été réalisée essentiellement à partir de la traduction de la FAQ officielle GO.
Nous tenons à souligner que cette faq ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette faq ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.
Sur ce, nous vous souhaitons une bonne lecture.
L'équipe de rédaction Developpez.com
[Traduction de la FAQ officielle]
La commodité de la conversions automatique entre les types numériques en C est contre-balancée par la confusion qui en résulte. L'expression est-elle signée ou non ? De quelle taille est la valeur ? Y a-t-il un débordement ? Le résultat est-il portable, indépendant de la machine sur lequel le programme s'exécute ? Cela complique aussi le travail du compilateur : les « conversions arithmétiques usuelles » ne sont pas faciles à mettre en œuvre et ne sont pas cohérentes entre les différentes architectures. Pour des raisons de portabilité, nous avons décidé de rendre les choses claires, simples et directes, au prix de devoir parfois faire des conversions explicites dans le code. La définition des constantes en Go – des valeurs de précision arbitraires, non signées et libres d'annotations de taille – améliore cependant considérablement les choses.
Un aspect voisin est que, contrairement à C, les types int et int64 sont des types distincts, même lorsqu'un int est codé sur 64 bits. Le type int est générique ; si c'est important pour vous de savoir combien de bits contient un entier, Go vous encourage à être explicite.
[Traduction de la FAQ officielle]
Pour la même raison que les chaînes de caractères le sont. Les maps sont une structure de données si puissante et si importante qu'en fournir une excellente implémentation avec le support syntaxique requis rend la programmation plus agréable. Nous pensons que la mise en œuvre des maps proposée par Go est suffisamment forte pour pouvoir satisfaire la vaste majorité des utilisations. Si une application spécifique peut bénéficier d'une mise en œuvre sur mesure, il est possible d'en écrire une, mais celle-ci ne sera pas aussi pratique syntaxiquement ; le compromis paraît raisonnable.
[Traduction de la FAQ officielle]
Une recherche dans une map nécessite un opérateur d'égalité, et les tranches (slices) ne fournissent pas cet opérateur. Elles ne le font pas parce que l'égalité n'est pas bien définie sur ce genre de types ; il y a de nombreuses considérations à prendre en compte : comparaison en surface ou en profondeur, comparaison des pointeurs ou des valeurs, comment manipuler les types récursifs, et ainsi de suite. Il se peut que nous revenions sur nos pas et mettions en œuvre une égalité sur les tranches qui n'entraîne pas de dysfonctionnement de programmes existants, mais sans une idée claire de ce que doit signifier une égalité entre des tranches, il s'est avéré plus simple de ne pas le faire pour l'instant.
Dans Go 1, contrairement aux versions précédentes, l'égalité est définie pour les structures (struct) et les tableaux (arrays), si bien que ces types peuvent servir de clefs à des maps. Mais les tranches n'ont pas de définition de l'égalité pour le moment.
[Traduction de la FAQ officielle]
Ce sujet a une longue histoire. Au commencement, les maps et les canaux (channels) étaient syntaxiquement des pointeurs et il était impossible de déclarer ou d'utiliser une instance qui ne fût pas un pointeur. En outre, nous n'étions pas encore bien sûrs de comment devaient se comporter les tableaux. Finalement, nous avons décidé qu'une séparation stricte entre les pointeurs et les valeurs rendrait le langage plus complexe à utiliser. Modifier ces types pour qu'ils soient des références vers la structure de données partagées associée a permis de résoudre ces problèmes. Ce changement a malheureusement ajouté un peu de complexité au langage, mais il a eu un effet majeur sur son utilisabilité. Go était devenu un langage plus productif et plus confortable quand il a été introduit.
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.