Über die Vor- und Nachteile der Programmierung in der Go-Sprache
Die folgende Kolumne des Golang-Tutorials stellt Ihnen die Vor- und Nachteile der Programmierung in der Go-Sprache vor. Ich hoffe, dass sie Freunden in Not hilfreich sein wird!
Kürzlich haben wir eine API mit Go geschrieben, einer Open-Source-Programmiersprache, die 2009 von Google eingeführt wurde. Durch den Einsatz von Go für die Entwicklung haben wir viele Erfahrungen und Erkenntnisse gesammelt und wollten diese mit den Lesern teilen, deshalb ist dieser Artikel entstanden.
Bei der Auswahl einer Programmiersprache für ein Projekt empfehlen wir immer, zu verstehen, in was das Projekt eingebaut werden soll, bevor man darüber nachdenkt, welche Programmiersprache man zum Erstellen verwenden soll. Lassen Sie das Produkt den entscheidenden Faktor dafür sein, wie es gebaut werden soll.
Hier sind einige Vor- und Nachteile, die wir bei der Entwicklung in Go festgestellt haben und die Ihnen helfen können zu verstehen, ob Go die richtige Sprache für die Erstellung Ihres nächsten Projekts ist.
Was wir an Go lieben
Die Verwendung der Go-Sprache hat in den letzten Jahren explosionsartig zugenommen. Es scheint, als ob jedes Startup es für Backend-Systeme verwendet. Entwickler glauben, dass es viele Gründe dafür gibt, warum es so beliebt ist.
Go-Sprache ist sehr schnell
Go-Sprache ist eine sehr schnelle Programmiersprache. Da die Go-Sprache in Maschinencode kompiliert wird, ist ihre Leistung natürlich besser als die der Programmiersprachen, die interpretiert werden oder über virtuelle Laufzeiten verfügen. Go-Programme kompilieren außerdem sehr schnell und die resultierenden Binärdateien sind sehr klein. Unsere API lässt sich in nur wenigen Sekunden kompilieren und die resultierende ausführbare Datei ist nur 11,5 MB groß.
Einfach zu beherrschen
Im Vergleich zu anderen Sprachen ist die Syntax der Go-Sprache sehr einfach und leicht zu erlernen. Sie können den Großteil der Go-Syntax im Kopf behalten, was bedeutet, dass Sie nicht viel Zeit damit verbringen müssen, Dinge nachzuschlagen. Die Go-Sprache ist außerdem sehr sauber und leicht zu lesen. Nicht-Go-Programmierer, insbesondere diejenigen, die mit der Syntax im C-Stil vertraut sind, können Go-Code lesen und verstehen, was vor sich geht.
Statische Typdefinitionssprache
Go-Sprache ist eine leistungsstarke statische Typdefinitionssprache. Es gibt Grundtypen wie int, byte und string. Es gibt auch Strukturtypen. Wie bei jeder stark typisierten Sprache ermöglicht das Typsystem dem Compiler, Fehler klassenübergreifend zu erkennen. Die Go-Sprache verfügt außerdem über integrierte Listen- und Kartentypen, die ebenfalls einfach zu verwenden sind.
Schnittstellentypen
Die Go-Sprache verfügt über Schnittstellentypen, und jede Struktur kann die Schnittstelle einfach durch Implementierung der Schnittstellenmethode erfüllen. Dadurch können Sie Abhängigkeiten in Ihrem Code entkoppeln. Anschließend können Sie Ihre Abhängigkeiten in Ihren Tests verspotten. Durch die Verwendung von Schnittstellen können Sie modulareren, testbareren Code schreiben. Die Go-Sprache verfügt außerdem über erstklassige Funktionen, die es Entwicklern ermöglichen, Code auf praktischere Weise zu schreiben.
Standardbibliothek
Die Go-Sprache verfügt über eine ziemlich gute Standardbibliothek. Es bietet praktische integrierte Funktionen für die Arbeit mit Basistypen. Es gibt Pakete, mit denen Sie auf einfache Weise einen Webserver erstellen, I/O verarbeiten, Verschlüsselungstechniken verwenden und Rohbytes bearbeiten können. Die von der Standardbibliothek bereitgestellte JSON-Serialisierung und -Deserialisierung ist sehr einfach. Durch die Verwendung von „Tags“ können Sie JSON-Feldnamen neben Strukturfeldern angeben.
Testunterstützung
Testunterstützung ist in die Standardbibliothek integriert und erfordert keine zusätzlichen Abhängigkeiten. Wenn Sie eine Datei namens thing.go haben, schreiben Sie Ihre Tests in eine andere Datei namens thing_test.go und führen Sie „go test“ aus. Go führt diese Tests schnell aus.
Statische Analysetools
Go-Sprache verfügt über viele und leistungsstarke statische Analysetools. Ein besonderes Tool ist gofmt, das Code entsprechend dem von Go vorgeschlagenen Stil formatiert. Dies normalisiert viele Meinungen zum Projekt und ermöglicht es Teammanagern, sich auf die durch den Code geleistete Arbeit zu konzentrieren. Wir führen bei jedem Build gofmt, golint und vet aus, und wenn Warnungen gefunden werden, schlägt der Build fehl.
Garbage Collection
Bei der Entwicklung der Go-Sprache wurde die Speicherverwaltung absichtlich so gestaltet, dass sie einfacher ist als bei C und C++. Dynamisch zugewiesene Objekte werden durch Garbage Collection gesammelt. Die Go-Sprache macht die Verwendung von Zeigern sicherer, da sie keine Zeigerarithmetik zulässt. Es besteht auch die Möglichkeit, Werttypen zu verwenden.
Ein einfacheres Parallelitätsmodell
Obwohl gleichzeitiges Programmieren noch nie einfach war, ist gleichzeitiges Programmieren in Go einfacher als in anderen Sprachen. Es ist fast so einfach wie das Erstellen eines leichtgewichtigen Threads namens „Goroutine“ und die Kommunikation mit diesem über einen „Kanal“, aber auch komplexere Modelle sind möglich.
Was uns an Go nicht gefällt
Wie wir bereits besprochen haben, ist Go tatsächlich eine ausgezeichnete Sprache. Es hat eine saubere Syntax und ist schnell auszuführen. Es hat auch viele Vorteile. Allerdings kommt es bei einer Programmiersprache nicht nur auf ihre Syntax an. Hier sind einige der Probleme, auf die wir gestoßen sind.
Keine Generika
Zuallererst ist dieses Problem wie der Elefant im Raum, es ist eine offensichtliche, aber ignorierte Tatsache. Die Go-Sprache hat keine Generika. Für Entwickler, die aus einer Sprache wie Java kommen, ist der Wechsel zu Go eine große Hürde, die es zu überwinden gilt. Dies bedeutet, dass der Grad der Code-Wiederverwendung reduziert wird. Obwohl die Go-Sprache über erstklassige Funktionen verfügt, können Sie diese Funktionen nicht für Sammlungen unterschiedlicher Typen wiederverwenden, wenn Sie Funktionen wie „map“, „reduce“ und „filter“ schreiben und diese Funktionen so entwerfen, dass sie auf Sammlungen eines Typs funktionieren. . Es gibt viele Möglichkeiten, dieses Problem zu lösen, aber alle erfordern letztendlich das Schreiben von mehr Code, was die Produktivität und Wartbarkeit verringert.
Schnittstellen sind implizit
Obwohl es schön ist, Schnittstellen zu haben, implementieren Strukturen Schnittstellen eher implizit als explizit. Dies soll eine der Stärken der Go-Sprache sein, aber wir fanden es schwierig, anhand der Struktur zu erkennen, ob sie die Schnittstelle implementiert. Sie können es nur wirklich wissen, indem Sie versuchen, das Programm zu kompilieren. Dies ist sicherlich kein Problem, wenn das Programm klein ist. Aber wenn das Programm mittelgroß bis groß angelegt ist, wird das Problem groß sein.
Schlechte Bibliotheksunterstützung
Die Unterstützung der Go-Sprachbibliothek ist lückenhaft. Unsere API lässt sich in Contentful integrieren, das über kein offiziell unterstütztes Go SDK verfügt. Das bedeutet, dass wir viel Code schreiben (und pflegen!) müssen, um Daten von Contentful anzufordern und zu analysieren. Wir müssen uns auch auf Elasticsearch-Bibliotheken von Drittanbietern verlassen. Von Anbietern bereitgestellte Go-SDKs sind nicht so beliebt wie ihre Java-, Ruby- oder JavaScript-Pendants.
Community-Kommunikation ist schwierig
Go-Community akzeptiert möglicherweise keine Vorschläge. Betrachten Sie dieses Problem im GitHub-Repository von Golint: https://github.com/golang/lint/issues/65. Ein Benutzer hat beantragt, dass Golint den Build abbrechen kann, wenn eine Warnung gefunden wird (dies ist, was wir in der Projektangelegenheit tun). ). Die Betreuer lehnten die Idee sofort ab. Es äußerten sich jedoch so viele Leute zu dem Problem, dass die Betreuer die gewünschte Funktion ein Jahr später schließlich hinzufügten.
Die Go-Community scheint Web-Frameworks ebenfalls nicht zu mögen. Die HTTP-Bibliothek von Go deckt zwar viele Bereiche ab, unterstützt jedoch weder Pfadparameter, Eingabeprüfung und -validierung noch die bei Webanwendungen üblichen übergreifenden Probleme. Ruby-Entwickler haben Rails, Java-Entwickler haben Spring MVC und Python-Entwickler haben Django. Viele Go-Entwickler verzichten jedoch auf die Verwendung von Frameworks. Die Realität ist jedoch, dass es keine Rahmenwerke gibt, im Gegenteil, es gibt viele. Aber wenn man erst einmal damit begonnen hat, ein Framework für ein Projekt zu verwenden, ist es fast unmöglich, es aufzugeben.
Split Dependency Management
Lange Zeit gab es in der Go-Sprache keinen stabilen, formalen Paketmanager. Das Go-Projekt wurde erst kürzlich nach Jahren des Bettelns in der Community veröffentlicht. Es gab bereits viele Tools, die diese Lücke füllten. Wir verwenden in unseren Projekten Govendor, das sehr leistungsfähig ist. Dies bedeutet jedoch, dass die Community fragmentiert ist und für Entwickler, die mit der Go-Sprache noch nicht vertraut sind, sehr verwirrend sein kann. Darüber hinaus basieren fast alle Paketmanager auf Git-Repositorys, und der Verlauf der Git-Repositorys kann sich jederzeit ändern. Vergleichen Sie dies mit Maven Central, das niemals die Bibliotheken entfernt oder ändert, von denen Ihr Projekt abhängt.
Entscheidung, ob die Go-Sprache verwendet werden soll
Manchmal müssen Sie die Situation der Maschine berücksichtigen. Wenn Sie Bytes senden und empfangen. Wenn Sie Tausende gleichzeitiger Prozesse verwalten. Möglicherweise schreiben Sie auch ein Betriebssystem, ein Containersystem oder einen Blockchain-Knoten. In diesen Fällen werden Sie sich höchstwahrscheinlich nicht für Generika interessieren. Weil Sie damit beschäftigt sind, jede Nanosekunde Leistung aus dem Chip herauszuholen.
Aber oft muss man an den Menschen denken. Geschäftsdomänendaten, die Sie verarbeiten müssen: Kunden, Mitarbeiter, Produkte, Bestellungen. Sie müssen eine Geschäftslogik schreiben, die auf diesen Domänenentitäten ausgeführt wird, und Sie müssen diese Geschäftslogik über die Jahre hinweg beibehalten. Und Sie müssen sich auf die sich ändernden Bedürfnisse einstellen, und zwar so schnell wie möglich. In diesen Fällen kommt es auf die Erfahrung des Entwicklers an.
Go ist eine Programmiersprache, die Maschinenzeit höher bewertet als menschliche Zeit. Manchmal ist die Maschinen- oder Programmleistung in Ihrem Bereich von entscheidender Bedeutung. In diesen Fällen kann Go eine gute Alternative zu C oder C++ sein. Wenn Sie jedoch eine typische N-Tier-Anwendung schreiben, treten häufig Leistungsengpässe in der Datenbank und, was noch wichtiger ist, bei der Modellierung der Daten auf.
Berücksichtigen Sie bei der Entscheidung, ob Sie die Go-Sprache verwenden möchten, die folgenden Faustregeln:
-
Wenn Sie mit Bytes arbeiten, ist die Go-Sprache möglicherweise eine gute Wahl.
-
Wenn Sie mit Daten arbeiten, ist die Go-Sprache möglicherweise keine gute Wahl.
Diese Situation könnte sich eines Tages in der Zukunft ändern. Die Go-Sprache und die Go-Community sind noch sehr jung. Sie könnten uns überraschen und Generika hinzufügen; oder ein beliebtes Web-Framework könnte die Oberhand gewinnen. Vorerst bleiben wir jedoch bei ausgereiften Programmiersprachen, die universelle Unterstützung und ausgereiftes Abhängigkeitsmanagement bieten und sich auf die Modellierung von Geschäftsdomänen konzentrieren.
Weitere technische Artikel zu Go finden Sie in der Kolumne Go-Sprachtutorial!
Das obige ist der detaillierte Inhalt vonÜber die Vor- und Nachteile der Programmierung in der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Wie schreibe ich mit der Go-Sprache das Benutzer-Feedback-Modul im Tür-zu-Tür-Kochsystem? Mit dem Aufkommen von Take-Away- und Tür-zu-Tür-Diensten entscheiden sich immer mehr Benutzer dafür, köstliches Essen zu Hause zu genießen. Bei Tür-zu-Tür-Kochdiensten ist das Feedback der Nutzer besonders wichtig, da es dazu beitragen kann, die Servicequalität und die Zufriedenheit der Nutzer zu verbessern. In diesem Artikel wird erläutert, wie Sie mithilfe der Go-Sprache das Benutzer-Feedback-Modul im Tür-zu-Tür-Kochsystem schreiben und spezifische Codebeispiele bereitstellen. Datenbankdesign und -erstellung Zunächst müssen wir eine Datenbank entwerfen, um Benutzer-Feedback-Informationen zu speichern. Angenommen, wir haben einen Feed namens

Beego ist eines der am häufigsten verwendeten Web-Frameworks in der Go-Sprache. Es bietet die Vorteile einer schnellen Entwicklung, einer binären Bereitstellung und einer hohen Parallelität. In einer Umgebung mit vielen gleichzeitigen Anforderungen werden jedoch die Leistungsoptimierungsanforderungen des Beego-Frameworks hervorgehoben. In diesem Artikel wird erläutert, wie Sie die Leistung von Beego durch angemessene Konfiguration, optimierten Code, Cache usw. optimieren können. 1. Durch die Verwendung eines effizienten Caching-Mechanismus kann die Anwendungsleistung erheblich verbessert und die Anzahl der Datenbankabfragen reduziert werden. Der Caching-Mechanismus des Beego-Frameworks ist ebenfalls sehr einfach und benutzerfreundlich und kann auf verschiedene Skalen angewendet werden.

Wie kann die Effizienz der Go-Sprachprogrammierung verbessert werden? Warum ist die Go-Sprache für Programmierer so wichtig? Mit der rasanten Popularität der Go-Sprache im Bereich der Softwareentwicklung schenken immer mehr Entwickler dieser Programmiersprache Aufmerksamkeit. Die Go-Sprache wurde weithin für ihre Einfachheit, Effizienz und Benutzerfreundlichkeit gelobt und hat sich nach und nach zu einer gängigen Programmiersprache entwickelt. Wie können wir also die Go-Sprache effizient zum Programmieren nutzen? 1. Nutzen Sie die Parallelitätsfunktionen der Go-Sprache vollständig aus

Go-Sprache ist eine effiziente Programmiersprache, die zunehmend in verteilten Systemen verwendet wird. Gleichzeitig ist der optimistische Sperrmechanismus für Entwickler zu einem wichtigen Werkzeug zur Bewältigung von Parallelitätsproblemen geworden. In diesem Artikel werden verteilte Systeme und optimistisches Sperren in der Go-Sprache untersucht. 1. Was ist ein verteiltes System? Unter einem verteilten System versteht man ein System, das aus mehreren Computern besteht, die über ein Netzwerk miteinander verbunden sind, um gemeinsam Aufgaben zu erledigen. Verteilte Systeme können die Systemzuverlässigkeit und den Durchsatz verbessern. in verteilt

Wie schreibe ich mit der Go-Sprache das Arbeitszeitmanagementmodul für Zusteller im Tür-zu-Tür-Kochsystem? Mit der boomenden Entwicklung des Take-Away-Marktes ist das Tür-zu-Tür-Kochsystem auch zu einer bequemen Wahl im Leben der Menschen geworden. Im Tür-zu-Tür-Kochsystem ist der Zusteller ein entscheidender Teil. Ein gutes Arbeitszeitmanagement ist für die Arbeitseffizienz und das Benutzererlebnis des Zustellpersonals sehr wichtig. In diesem Artikel wird erläutert, wie Sie mithilfe der Go-Sprache das Arbeitszeitverwaltungsmodul für Zusteller im Tür-zu-Tür-Kochsystem schreiben und spezifische Codebeispiele bereitstellen. Bedarfsanalyse Im Tür-zu-Tür-Kochsystem muss das Lieferpersonal dies normalerweise tun

Wie schreibe ich mit der Go-Sprache das Benutzerkontoverwaltungsmodul im Tür-zu-Tür-Kochsystem? Im modernen, schnelllebigen Leben entscheiden sich immer mehr Menschen dafür, ihre Ernährungsprobleme durch Kochdienste von Tür zu Tür zu lösen. Für diesen Dienstleister ist ein vollständiges und solides Benutzerkontenverwaltungssystem sehr wichtig. In diesem Artikel wird erläutert, wie Sie mithilfe der Go-Sprache ein Benutzerkontoverwaltungsmodul schreiben. Ziel ist es, Anbietern von Kochdiensten dabei zu helfen, die Kontoinformationen der Benutzer besser zu verwalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Erstellen Sie eine Datenbanktabelle. Zuerst müssen Sie einen Benutzer erstellen.

Wie gehe ich mit dem Dateisystem-Verzeichnisdurchlaufproblem gleichzeitiger Dateien in der Go-Sprache um? In der täglichen Entwicklung müssen wir häufig Dateien im Dateisystem durchlaufen. In der Go-Sprache können wir durch die Nutzung der Funktionen von Goroutine und Channel problemlos eine gleichzeitige Durchquerung des Dateisystemverzeichnisses durchführen. Zuerst müssen wir das Dateipfadpaket und das Betriebssystempaket einführen, um dateisystembezogene Vorgänge abzuschließen. Der spezifische Code lautet wie folgt: import("fmt"

Da der Take-out-Markt immer reifer wird, ist Hausmannskost für viele Familien zum Abendessen die erste Wahl. Als Anbieter von Kochdiensten von Tür zu Tür ist es wichtig, eine zuverlässige Aufladung des Benutzerkontos zu gewährleisten. In diesem Artikel wird erläutert, wie Sie mithilfe der Go-Sprache das Auflademodul für Benutzerkonten im Tür-zu-Tür-Kochsystem schreiben. 1. Design Beim Design des Auflademoduls müssen wir die folgenden Aspekte berücksichtigen: Die zu verwendende Datenstruktur befindet sich im Auflademodul und wir müssen das Guthaben des Benutzers vor und nach dem Aufladen speichern. Daher können wir die folgende Datenstruktur verwenden: typeAccount
