Was sind die besten Golang-IDEs?

Go ist eine fantastische Programmiersprache. Es verfügt auch über eine umfassende Werkzeugkette. Viele Entwickler verwenden einfach Nur-Text-Editoren mit oder ohne Plugins, um Go-Code zu schreiben, aber viele andere bevorzugen die Verwendung geeigneter IDEs (integrierte Entwicklungsumgebungen).. 

In diesem Tutorial erfahren Sie mehr über den aktuellen Status von Go-IDEs und sind bereit, Ihre Waffe auszuwählen.

Warum eine IDE verwenden??

Ich war immer ein großer Fan von IDEs. Zu Beginn meiner Karriere habe ich Microsoft Visual Studio für die C / C ++ - Entwicklung sowie C # verwendet. Ich habe NetBeans für eine kurze Java-Entwicklung verwendet. Ich habe die PyCharm-Technologie von JetBrains für die Python-Entwicklung verwendet, und heutzutage verwende ich die Gogland for Go-Entwicklung von JetBrains.

Normalerweise arbeite ich mit großen Softwaresystemen, die aus mehreren Projekten mit Tausenden von Dateien bestehen. Ich brauche viel Hilfe bei großen Codebases. Hier die Hauptgründe, warum ich IDEs so mag:

Integrierte Code-Organisation und Navigation

Mit einer guten IDE können Sie Ihren Code hierarchisch organisieren, ihn problemlos anzeigen und darin navigieren sowie Ihren Code schnell durchsuchen. Die IDE führt viel mehr als nur eine Textsuche durch und ermöglicht das Filtern nach sprachspezifischen Konstrukten (z. B. nur Klassen oder Interfaces mit einem bestimmten Namen anzeigen)..

Integriertes Testen

Integriertes Testen ist ebenfalls von entscheidender Bedeutung. Ich verbringe die meiste Zeit in der Entwicklung mit Tests - entweder, um sie zu schreiben, zu versuchen, sie zum Bestehen zu bringen, oder zu untersuchen, warum Tests plötzlich fehlgeschlagen sind. Mit einer guten IDE mit integrierten Tests können Sie Tests selektiv ausführen (alle, nur ein Projekt, nur fehlgeschlagene Tests des vorherigen Laufs), werden Fehler hervorgehoben und Sie können schnell zur richtigen Stelle im Code springen, um alle zu beheben Problem.

Integriertes Debugging 

Dies ist wahrscheinlich das wichtigste Merkmal für mich. Ich liebe integrierte Debugger. Ich möchte in der Lage sein, einen Haltepunkt (einschließlich bedingter Haltepunkte) hinzuzufügen, den Stack-Trace anzuzeigen und die Variablen in jedem Frame anzuzeigen. 

Für Bonuspunkte (danke PyCharm) möchte ich gerne eine interaktive Konsolensitzung haben, wenn ein Haltepunkt erreicht wird. Die Alternativen zum Printf-Debugging (das den Code ändern und neu erstellen muss) oder das Anzeigen von Protokolldateien (oft nicht genügend Granularität oder viel Rauschen) sind viel frustrierender und weniger produktiv. Selbst eigenständige Debugger wie gdb kommen der Produktivität eines guten integrierten Debuggers nicht nahe.

Gogland

Gogland ist meine derzeitige Golang-IDE. Es ist ein sehr junges Produkt, das sich noch in der Vorschau für den frühen Zugriff befindet, aber ich halte es immer noch für die vollständigste und integrierte Go IDE. Es basiert auf dem starken Fundament von JetBrains und ist daher äußerst robust und voll funktionsfähig.

Code-Editor und Hilfe

Der Code-Editor von Gogland ist hervorragend. Hier sind einige seiner Fähigkeiten:

  • Tabbed-Schnittstelle
  • Smart Code Vervollständigung
  • Inspektionen und schnelle Korrekturen
  • Refactorings
  • Schnelle Navigation
  • Schnelle Popups für Dokumentation, Definition, Verwendung, Struktur usw.
  • Code-Generierung (z. B. Schnittstelle implementieren)
  • Rekursive Anrufe erkennen
  • Zeigt den Typ eines Ausdrucks an
  • Hervorheben von Austrittspunkten von Funktionen
  • Parameterhinweise 

Debugger

Der Gogland-Debugger ist ausgezeichnet. Es basiert auf Delve, das auch von anderen IDEs verwendet wird, die wir ebenfalls behandeln. Es verwendet die bekannten JetBrains-Debug-Konfigurationen, um alles über einen Debug-Lauf wie die ausgeführte Binärdatei, die Umgebungsvariablen, das Arbeitsverzeichnis und die Befehlszeilenargumente zu steuern. 

Sie können Haltepunkte, bedingte Haltepunkte und Überwachungen festlegen. Wenn ein Haltepunkt erreicht wird, können Sie die Stack-Ablaufverfolgung und die lokalen Variablen in jedem Frame beobachten. Leider werden globale Variablen nicht angezeigt und sind häufig in Go erforderlich.

Ich hatte ein Problem mit dem Debugger, bei dem Haltepunkte vorzeitig getroffen werden! Betrachten Sie das folgende Go-Snippet:

x: = 1 y: = 3 z: = x + y fmt.Println (z)

Wenn ich in der letzten Zeile einen Haltepunkt setze, traf dieser manchmal, aber der Wert von z wäre 0 anstatt 4. Wie kann das sein? Es stellt sich heraus, dass der Debugger irgendwie verwirrt wurde. Wenn ich weiter durch den Code gehe, springt er zurück zu z: = x + y, Weisen Sie 4 zu z zu, gehen Sie dann wieder zur letzten Zeile und drucken Sie 4 ordnungsgemäß auf dem Bildschirm. 

Ich habe ein paar Stunden damit verbracht, einen komplizierten Code zu debuggen, ohne zu merken, dass ich nicht immer das richtige Bild bekam. Schließlich fand ich heraus, was los war, und ignorierte einfach das vorzeitige Auslösen von Haltepunkten.

Ich bin mir nicht sicher, ob es ein Delve- oder Gogland-Problem ist, aber ich bin mir sicher, dass sie es bald beheben werden. Denken Sie daran, dass dies nur eine Vorschau für den frühen Zugriff ist.

Test Runner

Mit dem Testrunner können Sie Tests ausführen, stoppen und erneut starten. Ich konnte es erfolgreich zum Ausführen und Debuggen von Komponententests sowie für Integrationstests mit Gos Testpaket und einem BDD-Testframework wie ginkgo verwenden.

Gehen Sie auf Tools

Go wird mit verschiedenen Tools geliefert, die von Gogland direkt in die IDE integriert werden. Sie können jedes Tool über das Menü "Code | Go Tools" aufrufen. Die integrierte Code-Formatierung von Gogland verwendet das Standardwerkzeug "go fmt".

Versionskontrolle

Gogland übernimmt das ausgereifte Quellcodeverwaltungssystem anderer JetBrains-Produkte. Ich habe in erster Linie die Git-Unterstützung verwendet, die die Verwaltung mehrerer Projekte, eine hervorragende Anzeige von Verzweigungen, mehrere Änderungssätze und mehr ermöglicht. Andere Quellensteuerungssysteme wie Mercurial und SVN werden ebenfalls über zusätzliche Plugins unterstützt.

Integriertes Terminal  

Gogland bietet ein integriertes Terminal für den Fall, dass Sie einige Befehle ausführen müssen. Es ist schön, in der IDE zu bleiben und von / zu Editierfenstern sehen oder kopieren zu können, ohne das Fenster vollständig zu wechseln.

Erweiterbarkeit

Gogland verfügt über eine Vielzahl integrierter Funktionen, ist jedoch vollständig erweiterbar und viele seiner integrierten Funktionen sind vorinstallierte Plug-ins. Sie können viele nützliche Plugins installieren und auf Wunsch auch eigene Plugins entwickeln.

Visual Studio-Code

Visual Studio Code ist ein erweiterbarer Open-Source-Code-Editor, der hauptsächlich von Microsoft entwickelt wurde (mit vielen Beiträgen der Community). Es basiert auf Electron, das wiederum auf Chrom basiert. Visual Studio Code unterstützt viele Sprachen und konzentrierte sich ursprünglich auf die Webentwicklung. Die Go-Entwicklung wird stark unterstützt, einschließlich der Integration aller Go-Tools und des Delve-Debuggers über eine dedizierte Erweiterung. Sie müssen einige Go-Pakete und Tools installieren, um zu beginnen.

Visual Studio Code bietet außerdem eine integrierte Integration von git, einen hierarchischen Ordner- / Datei-Explorer und eine Oberfläche mit Registerkarten.

Die IntelliSense-Unterstützung (automatische Vervollständigung, Darstellung der Parametertypen und Dokumentation) ist großartig und sorgt für ein sehr angenehmes Bearbeitungserlebnis. Der integrierte Debugger (der auch Delve unter der Haube verwendet) ist sehr gut gemacht und passt zu Goglands Debugger.

Visual Studio Code ist sehr ansprechend und schnell. Hier ist die Liste der wesentlichen Funktionen:

  • Abschlusslisten (mit gocode)
  • Signatur-Hilfe (mit gogetdoc oder godef + godoc)
  • Schnipsel
  • Kurzinfo (mit gogetdoc oder godef + godoc)
  • Gehe zu Definition (mit gogetdoc oder godef + godoc)
  • Referenzen finden (mit Guru)
  • Referenzen CodeLens
  • Dateiumriss (mit Go-Umriss)
  • Workspace-Symbolsuche (mit Go-Symbolen)
  • Umbenennen (mit gorename. Hinweis: Damit die Funktion "Rückgängig machen nach Umbenennen" in Windows funktioniert, muss das Werkzeug "diff" in Ihrem Pfad enthalten sein.)
  • Build-on-Save (mit go build and go test)
  • Fusselsparen (mit Golint oder Gometalinter)
  • Format (mit Goreturns oder Goimports oder Gofmt)
  • Generierung von Komponententests (mit Tests)
  • Importe hinzufügen (mit gopkgs)
  • Tags zu Strukturfeldern hinzufügen / entfernen (mit gomodifytags)
  • Semantic / Syntactic-Fehlerberichterstattung während der Eingabe (mithilfe von gotype-live)
  • Tests unter dem Cursor in der aktuellen Datei, im aktuellen Paket und im gesamten Arbeitsbereich ausführen (mit go test)

LiteIDE

LiteIDE ist sehr ungewöhnlich. Es war die erste seriöse Go-IDE, die 2011/2012 gegründet wurde und noch immer gut läuft. Es handelt sich um eine C ++ Qt-Anwendung, und sie hat ein benutzerdefiniertes Erscheinungsbild. Ähnlich wie bei Gogland und Visual Studio Code verwendet es die Go-Tools und den Delve-Debugger, um Sprachdienste bereitzustellen (obwohl es bereits mit dem gdb-Debugger begann, bevor Delve bereit war). 

Insgesamt handelt es sich um eine voll funktionsfähige IDE, die sich jedoch nicht so poliert anfühlt. Soweit ich das beurteilen kann, handelt es sich um eine Ein-Mann-Anstrengung, die außergewöhnlich ist. Hier ist eine Aufschlüsselung der LiteIDE-Funktionen.

Kernfunktionen

  • Systemumgebungsverwaltung
  • Konfigurierbare Buildbefehle
  • Einfaches und offenes Debug-System (unterstützt sowohl gdb als auch Delve)
  • Kate-Format für die automatische Vervollständigung und das Theming
  • Konfigurierbare automatische Vervollständigung mit WordApi
  • MIME-Typ-basiertes System
  • Plugin-Unterstützung
  • Schnell öffnen

Golang-Unterstützung

  • Paketbrowser
  • Klassenansicht und Gliederung
  • Dokumentenbrowser
  • Gocode-Unterstützung
  • GOPATH-API-Index
  • Code-Navigation
  • Verwendungen suchen
  • Code Refactor
  • Spielplatz gehen

Zusätzliche Unterstützung

  • Markdown
  • JSON
  • Golang Geschenk

Breit

Wide ist interessant, weil es sich um eine dedizierte Golang-IDE handelt. Der Fokus liegt auf der kollaborativen Entwicklung und ist für Teams konzipiert. Der Entwickler ist chinesisch und die Dokumentation ist größtenteils auf Chinesisch, daher ist sie möglicherweise nicht für jeden geeignet. In Bezug auf Funktionen und Integration ist es definitiv nicht mit den anderen IDEs vergleichbar.

Go-Plugins für andere IDEs

Es gibt viele allgemeine IDEs, die viele Programmiersprachen unterstützen und die Go-Sprache zusätzlich unterstützen. Ich bin kein großer Fan solcher Umgebungen. Ich glaube, dass eine integrierte Umgebung über tief integrierte sprachspezifische Haken verfügen muss. Es ist schwierig, es als einfaches Plugin zu implementieren (obwohl Sie vielleicht behaupten, dass dies genau das ist, was VS Code tut). 

Einige beliebte Entwicklungsumgebungen, die Go-Unterstützung hinzugefügt haben, sind:

  • Finsternis
  • Atom
  • Klammern
  • Komodo
  • Wolke 9

Texteditoren

Go ist eine einfache Sprache. Viele Leute fühlen sich sehr produktiv, wenn sie einen Texteditor verwenden, möglicherweise mit zusätzlichen Go-Plugins. Ich denke nicht an diese wirklich integrierten Entwicklungsumgebungen. Es ist jedoch sinnvoll, wenn Sie viele Jahre Erfahrung mit Ihrem Texteditor haben, ihn bereits an Ihre Bedürfnisse angepasst haben und ihn für viele andere Aufgaben verwenden. Hier sind einige der beliebtesten Texteditoren und deren Go-Plugins:

Emacs

Mit folgenden Plugins: 

  • Go-Modus
  • GoFlyMake Flymake-artige Syntaxprüfung für Go
  • go-errcheck.el Errcheck-Integration für Emacs

Erhabener Text 

Mit dem GoSublime-Plugin  

Vim und NeoVim 

Mit einer Fülle von Go-Plugins.

  • vim-go
  • Syntastic
  • Tagbar
  • vim-compiler-go
  • vim-godef
  • vim-go-extra

Fazit

Go hat einen langen Weg zurückgelegt und verfügt über ein robustes Ökosystem, das viele Optionen für die Entwicklungsumgebung umfasst. Der Delve-Debugger bietet ein fantastisches interaktives Debugging-Erlebnis und wird von den meisten Top-IDEs verwendet. Spielen Sie mit diesen IDEs herum und finden Sie diejenige, die am besten zu Ihnen passt. 

Die richtige IDE kann die Arbeit mit Go noch mehr Spaß machen.