Maison >développement back-end >Golang >Quelle est la différence entre le langage Go et le langage Java ?

Quelle est la différence entre le langage Go et le langage Java ?

青灯夜游
青灯夜游original
2020-12-08 14:00:4518852parcourir

Différence : 1. Go n'autorise pas la surcharge de fonctions et doit avoir des noms uniques pour les méthodes et les fonctions ; Java autorise la surcharge de fonctions. 2. Java autorise le polymorphisme par défaut, mais pas Go. 3. Le code Go peut automatiquement s'adapter à plusieurs cœurs ; Java n'est pas toujours suffisamment évolutif. 4. Java ne prend pas en charge l'héritage multiple, mais Go prend en charge l'héritage multiple.

Quelle est la différence entre le langage Go et le langage Java ?

L'environnement d'exploitation de cet article : système Windows10, Go 1.11.2, ordinateur Thinkpad T480.

Recommandations associées : "Tutoriel vidéo Go"

Qu'est-ce que le langage Go ?

Go, également connu sous le nom de Golang, est un langage de programmation. En tant que langage de programmation open source, Go facilite la création de logiciels fiables, simples et efficaces.

Go est un langage typé et compilé statiquement. Le langage Go assure le garbage collection, la concurrence de style CSP, la sécurité de la mémoire et le typage structurel.

Qu'est-ce que Java ?

Java est un langage de programmation informatique à usage général basé sur les classes, concurrent et orienté objet. Java est spécifiquement conçu pour contenir très peu de dépendances d'implémentation. Les applications Java s'exécutent sur JVM (Java Virtual Machine). C’est aujourd’hui l’un des langages de programmation les plus connus et les plus connus.

Java est un langage de programmation utilisé pour développer des logiciels pour plusieurs plateformes. Le code compilé ou le bytecode d'une application Java peut s'exécuter sur la plupart des systèmes d'exploitation, notamment Linux, Mac OS et Linux. Une grande partie de la syntaxe de Java est dérivée des langages C++ et C.

La différence entre le langage Go et Java

1. Surcharge de fonctions

La surcharge de fonctions n'est pas autorisée sur Go, vous devez avoir des méthodes et des fonctions uniques. nom. Java permet la surcharge de fonctions.

2. La vitesse

go est plus rapide que Java

3 Polymorphisme

Java autorise le polymorphisme par défaut. Cependant, Go ne le fait pas.

L'implémentation du polymorphisme en Java suit un principe : lorsqu'une variable de référence d'objet de superclasse fait référence à un objet de sous-classe, le type de l'objet référencé plutôt que le type de la variable de référence détermine quelle méthode membre est appelée, mais c'est La méthode appelée doit être définie dans la superclasse, c'est-à-dire une méthode remplacée par la sous-classe. Le polymorphisme en Java peut être obtenu grâce à deux méthodes : basée sur l'héritage et basée sur l'interface.

Le langage Go ne permet généralement pas différents types d'affectations, c'est-à-dire qu'il ne prend pas en charge le polymorphisme traditionnel. L'interface est une exception et peut être affectée à différents types Tant qu'un type implémente l'interface, nous pouvons attribuer des variables de ce type aux variables de l'interface.

4. Configuration du routage

Le langage Go utilise le protocole HTTP pour la configuration du routage ; tandis que Java utilise Akka.routing.ConsistentHashingRouter et Akka.routing.ScatterGatherFirstCompletedRouter pour la configuration du routage.

5. Évolutivité

Le code Go peut automatiquement s'adapter à plusieurs cœurs, cependant, Java n'a pas toujours une évolutivité suffisante.

6. Système de types :

Il existe deux systèmes de types complètement indépendants en JAVA L'un est le système de types de valeurs, byte, int, boolean, char, double et l'autre est Object. tapez le système avec le type root, Integer, HashMap, etc. Si le système de types de valeur souhaite utiliser des références de type d’objet, il doit être encadré. La plupart des types du langage Go ont une sémantique de valeur, y compris certains types composites tels que des tableaux, des structures, etc., et ces types peuvent avoir des méthodes. Nous pouvons ajouter de nouvelles méthodes à n’importe quel type. Dans le même temps, le langage Go peut obtenir une référence à un objet via &, comme var b=&a

7. Passage d'objet :

Les méthodes d'objet en Java auront un this caché. pointeur passé, alors que dans le langage Go, l'orientation objet est simplement exprimée sous une forme grammaticale différente. Ce pointeur n'est pas caché, c'est-à-dire que la cible imposée par la méthode est passée explicitement et n'est pas cachée. De plus, la cible appliquée par la méthode n'est pas nécessairement un pointeur (java passe un pointeur vers un objet, s'il s'agit d'un pointeur, il n'est pas nécessaire de le nommer ainsi).

8. Initialisation :

Il existe des constructeurs par défaut ou des constructeurs définis par l'utilisateur en Java, qui ne sont pas nécessaires dans Go. Vous pouvez personnaliser une fonction ordinaire.

9. Accessibilité des membres :

Java utilise des mots-clés tels que privé, protégé, public et package pour le contrôle d'accès. Si vous souhaitez qu'un symbole soit accessible depuis d'autres packages, vous devez définir le symbole commençant par une lettre majuscule. Les symboles commençant par une lettre minuscule ne sont accessibles que dans le package.

10. Héritage :

L'héritage Java est complété via le mot-clé extends et ne prend pas en charge l'héritage multiple. L'héritage dans le langage Go s'effectue par composition anonyme : la classe de base est définie sous la forme de Struct, et la sous-classe n'a besoin que de mettre la classe de base en tant que membre dans la définition de la sous-classe, et la disposition de la mémoire peut être modifiée en ajustant la position des membres de la classe de base, prenant en charge l'héritage multiple.

11. Interface :

Les interfaces en Java existent sous forme de contrats dans différents composants et sont obligatoires. Les classes doivent déclarer qu'elles implémentent une interface et doivent hériter de l'interface. Même s'il existe deux interfaces identiques mais uniquement des noms différents, la question de savoir si la classe implémente l'interface ne peut être déterminée que si l'interface d'implémentation déclarée par la classe inclut l'interface, appelée interface « intrusive ».

Le langage GO utilise une interface non intrusive. Une classe a seulement besoin d'implémenter toutes les fonctions requises par l'interface, on dit alors que la classe implémente l'interface. Le langage GO peut effectuer une requête d'interface (si l'objet pointé par l'interface implémente une autre interface), taper une requête, etc. via l'interface.

Pour plus de connaissances liées à la programmation, veuillez visiter : Cours de programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn