web-dev-qa-db-fra.com

Google est-il une langue de sécurité?

cette page http://golang.org/doc/go_faq.html Écrit:

bien que Go ait des types statiques, la langue tente de rendre des types de poids plus léger que dans typique OO Langues

Donc, ma question est exactement qui est exactement tapé en toute sécurité avec des génériques (comme c #) ou de manière lâche (comme JavaScript) ou facultative (comme option strict strict dans vb.net)

14
Pacerier

La sécurité du type n'est pas un type de type noir ou blanc ou non. C'est plus spectre et certaines langues peuvent être plus Type Safe que d'autres (et inversement). Cependant, je pense que ce que vous envisagez avec C # vs. JavaScript est probable typing statique (où la vérification de type se produit au moment de la compilation) contre la dactylographie dynamique (où la vérification de type se produit au moment de l'exécution) - certainement, c'est-à-dire que c'est Qu'est-ce que le go FAQ parle de.

Google Go est statiquement dactylographié, mais un certain nombre de fonctionnalités le font "apparaître" être (au moins quelque peu) dactylographiées dynamiquement. Par exemple, vous n'avez pas besoin de marquer explicitement votre classe comme implémentant des interfaces. Si les signatures de méthode de votre classe correspondent à ceux de l'interface, votre classe implémente automatiquement cette interface (une sorte de typage de canard). Ceci est utile pour étendre les classes et les classes intégrées dans des bibliothèques tierces, car vous pouvez simplement créer votre interface pour correspondre aux méthodes de la classe tiers et la mise en œuvre automatiquement.

Le type de sécurité est en fait un "axe" différent du système de type. Par exemple, C est une langue typée de type statistique qui n'est pas sécuritaire - les pointeurs vous permettent de faire à peu près tout ce que vous aimez, même des choses qui vont planter votre programme. JavaScript est dactylographié de manière dynamique, mais est également sécurisé: vous ne pouvez pas effectuer des opérations qui planteront votre programme. C # est surtout sécuritaire de type, mais vous pouvez expliquer explicitement les zones de code unsafe et faire des choses qui ne sont plus sécuritaires.

Google Go est également de sécurité dans le sens où vous ne pouvez pas vous gâter avec des types et une collision du programme (aucun accès direct aux pointeurs).

27
Dean Harding

Il est saisi en toute sécurité dans qu'un type ne sera jamais mal interprété, mais un type incorrect peut entraîner la panique du programme.

4
dan_waterworth