Quali sono i migliori IDE Golang?

Go è un fantastico linguaggio di programmazione. Inoltre viene fornito con una catena di strumenti completa. Molti sviluppatori usano solo editor di testo semplice con o senza plugin per scrivere codice Go, ma molti altri preferiscono utilizzare IDE adeguati (ambienti di sviluppo integrati). 

In questo tutorial, imparerai lo stato attuale degli IDE Go e sarai pronto a scegliere la tua arma.

Perché usare un IDE?

Sono sempre stato un grande fan degli IDE. All'inizio della mia carriera, ho usato anche Microsoft Visual Studio per lo sviluppo C / C ++ e C #. Ho usato NetBeans per un breve periodo di sviluppo di Java. Ho usato PyCharm per lo sviluppo Python di JetBrains e oggi uso lo sviluppo di Gogland per Go di JetBrains.

Di solito lavoro su sistemi software su larga scala che consistono in più progetti con migliaia di file. Ho bisogno di molto aiuto con codebase di grandi dimensioni. Ecco i motivi principali per cui mi piacciono così tanto gli IDE:

Organizzazione e navigazione integrate del codice

Con un buon IDE, puoi organizzare il tuo codice gerarchicamente, visualizzarlo e navigarlo con facilità, e anche cercare rapidamente il tuo codice. L'IDE farà molto più della semplice ricerca di testo e ti permetterà di filtrare in base a costrutti specifici della lingua (ad esempio, mostra solo le classi o le interfacce con un nome particolare).

Test integrato

Anche i test integrati sono cruciali. Trascorro la maggior parte del mio tempo di sviluppo sui test, scrivendoli, cercando di farli passare o indagando sul perché improvvisamente i test hanno fallito. Un buon IDE con test integrati ti consentirà di eseguire i test in modo selettivo (tutto, un solo progetto, solo test falliti della precedente esecuzione), evidenzierà i fallimenti e ti consentirà di saltare rapidamente nel posto giusto nel codice per correggere qualsiasi problema.

Debug integrato 

Questa è probabilmente la caratteristica più importante per me. Adoro i debugger integrati. Voglio essere in grado di aggiungere un punto di interruzione (compresi i punti di interruzione condizionali), visualizzare la traccia dello stack e visualizzare le variabili su ciascun fotogramma. 

Per i punti bonus (grazie a PyCharm), mi piace avere una sessione di console interattiva quando un punto di interruzione colpisce. Le alternative di debug di printf (richiede la modifica del codice e della ricostruzione) o la visualizzazione dei file di registro (spesso non abbastanza granularità o molto rumore) sono molto più frustranti e meno produttive. Anche i debugger standalone come gdb non si avvicinano alla produttività di un buon debugger integrato.

Gogland

Gogland è il mio IDE Golang attuale. È un prodotto molto giovane, ancora in anteprima di accesso anticipato, ma lo considero ancora il Go IDE più completo e integrato. È costruito sulla solida base di JetBrains, quindi è estremamente robusto e pieno di funzionalità.

Editor di codice e assistenza

L'editor di codice di Gogland è superbo. Ecco alcune delle sue capacità:

  • Interfaccia a schede
  • Completamento codice intelligente
  • Ispezioni e soluzioni rapide
  • refactoring
  • Navigazione veloce
  • Popup rapidi per documentazione, definizione, usi, struttura, ecc.
  • Generazione del codice (ad esempio interfaccia dell'attrezzo)
  • Rilevazione di chiamate ricorsive
  • Mostrando il tipo di qualsiasi espressione
  • Evidenziare i punti di uscita della funzione
  • Suggerimenti per i parametri 

Debugger

Il debugger di Gogland è eccellente. È costruito su Delve, che viene utilizzato anche da altri IDE che copriamo. Usa le familiari configurazioni di debug di JetBrains per controllare tutto su un'esecuzione di debug come binario eseguito, le variabili di ambiente, la directory di lavoro e gli argomenti della riga di comando. 

È possibile impostare punti di interruzione, punti di interruzione condizionali e orologi. Quando viene colpito un punto di interruzione, è possibile osservare la traccia dello stack e le variabili locali in ciascun fotogramma. Sfortunatamente, le variabili globali non vengono visualizzate e sono spesso necessarie in Go.

Ho avuto un problema con il debugger in cui i punti di interruzione sono stati prematuramente premuti! Considera il seguente frammento di Go:

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

A volte, se inserissi un breakpoint sull'ultima riga, avrebbe colpito, ma il valore di z sarebbe 0, invece di 4. Come può essere? Si scopre che il debugger è stato confuso in qualche modo. Se continuo a scavalcare il codice, tornerà a z: = x + y, assegnare da 4 a z, quindi tornare all'ultima riga e stampare correttamente 4 sullo schermo. 

Ho perso un paio d'ore cercando di eseguire il debug di un pezzo complicato di codice, senza rendermi conto che non ottenevo sempre l'immagine corretta. Alla fine, ho capito cosa stava succedendo e ho semplicemente ignorato il finto avvio anticipato dei breakpoint.

Non sono sicuro che si tratti di un problema di Delve o Gogland, ma sono sicuro che lo risolveranno presto. Ricorda che è solo un'anteprima di accesso anticipato.

Test Runner

Il test runner ti consente di eseguire, fermare e riavviare i test. Sono stato in grado di usarlo con successo per eseguire e debug di test unitari, così come test di integrazione usando sia il pacchetto di test di Go sia un framework di test BDD come ginkgo.

Vai Strumenti

Go viene fornito con vari strumenti e Gogland li integra direttamente nell'IDE. Puoi richiamare qualsiasi strumento dal menu "Codice | Vai Strumenti". La formattazione del codice integrata di Gogland utilizza lo strumento standard "go fmt".

Controllo della versione

Gogland eredita il maturo sistema di gestione del controllo dei sorgenti di altri prodotti JetBrains. Ho usato principalmente il supporto git, che consente la gestione di più progetti, l'eccellente visualizzazione di rami, più set di modifiche e altro. Altri sistemi di controllo del codice sorgente come Mercurial e SVN sono supportati anche tramite plugin aggiuntivi.

Terminale integrato  

Gogland fornisce un terminale integrato nel caso in cui sia necessario eseguire alcuni comandi. È bello stare dentro l'IDE ed essere in grado di guardare o copiare da / verso i riquadri dell'editor senza passare completamente da Windows.

Estensibilità

Gogland ha un sacco di funzionalità integrate, ma è completamente estensibile e molte delle sue funzionalità incorporate sono in realtà plug-in pre-caricati. Puoi installare molti plugin utili e puoi sviluppare i tuoi plugin, se lo desideri.

Codice di Visual Studio

Visual Studio Code è un editor di codice open source estensibile sviluppato principalmente da Microsoft (con molti contributi dalla community). È basato su Electron, che a sua volta è basato su Chromium. Codice di Visual Studio supporta molte lingue e originariamente focalizzato sullo sviluppo web. Ha un forte supporto per lo sviluppo di Go, compresa l'integrazione di tutti gli strumenti Go e del debugger Delve tramite un'estensione dedicata. Avrai bisogno di installare alcuni pacchetti e strumenti Go per iniziare.

Visual Studio Code offre anche integrazione git integrata, cartella gerarchica / esploratore di file e un'interfaccia a schede.

Il supporto IntelliSense (completamento automatico, che mostra i tipi di parametri e la documentazione) è ottimo e offre un'esperienza di editing molto piacevole. Il debugger integrato (usa anche Delve sotto il cofano) è molto ben fatto e abbina il debugger di Gogland.

Codice di Visual Studio è molto reattivo e veloce. Ecco la sua lista di caratteristiche sostanziali:

  • Elenchi di completamento (utilizzando gocode)
  • Firma Aiuto (usando gogetdoc o godef + godoc)
  • Frammenti
  • Informazioni rapide (usando gogetdoc o godef + godoc)
  • Goto Definition (usando gogetdoc o godef + godoc)
  • Trova riferimenti (usando il guru)
  • Referenze CodeLens
  • Schema del file (usando il go-outline)
  • Ricerca dei simboli dell'area di lavoro (usando i go-symbols)
  • Rinomina (usando il nome del file.) Nota: per annullare dopo la rinomina per funzionare in Windows, devi avere lo strumento diff nel tuo percorso)
  • Build-on-save (usando go build e go test)
  • Lint-on-save (utilizzando golint o gometalinter)
  • Formato (utilizzando goreturns o goimports o gofmt)
  • Genera lo scheletro dei test unitari (usando i metodi di acquisizione)
  • Aggiungi importazioni (utilizzando gopkgs)
  • Aggiungi / Rimuovi tag nei campi struct (usando gomodifytags)
  • Segnalazione di errori semantici / sintattici durante la digitazione (utilizzando gotype-live)
  • Esegui i test sotto il cursore, nel file corrente, nel pacchetto corrente, nell'intero workspace (usando go test)

LiteIDE

LiteIDE è molto insolito. È stato il primo IDE Go serio, iniziato nel 2011/2012, ed è ancora forte. È un'applicazione Qt C ++ e ha un aspetto personalizzato. Simile a Gogland e Visual Studio Code, utilizza gli strumenti Go e il debug di Delve per fornire servizi linguistici (sebbene sia iniziato con il debugger di gdb prima che Delve fosse pronto). 

Nel complesso, è un IDE completo, ma non sembra così lucido. Per quanto posso dire, questo è praticamente uno sforzo di un solo uomo, che è straordinario. Ecco una ripartizione delle caratteristiche di LiteIDE.

Caratteristiche principali

  • Gestione dell'ambiente di sistema
  • Comandi di compilazione configurabili
  • Sistema di debug semplice e aperto (supporta sia gdb che Delve)
  • Formato Kate per auto-completamento e tematizzazione
  • Completamento automatico configurabile con WordApi
  • Sistema basato sul tipo MIME
  • Supporto plugin
  • Quick Open

Supporto per Golang

  • Browser del pacchetto
  • Vista di classe e contorno
  • Browser dei documenti
  • Supporto Gocode
  • Indice API GOPATH
  • Codice di navigazione
  • Trova usi
  • Codice Refactor
  • Vai al parco giochi

Supporto aggiuntivo

  • riduione di prezzo
  • JSON
  • Presente di Golang

Largo

Wide è interessante perché è un IDE dedicato basato sul web di Golang. Il suo obiettivo è lo sviluppo collaborativo ed è progettato per i team. Lo sviluppatore è cinese e gran parte della documentazione è in cinese, quindi potrebbe non essere adatta a tutti. Non è assolutamente alla pari con gli altri IDE in termini di funzionalità e integrazione.

Vai Plugin per altri IDE

Esistono molti IDE generici che supportano molti linguaggi di programmazione e hanno anche aggiunto il supporto per la lingua Go. Non sono un grande fan di questi ambienti. Credo che un ambiente integrato debba avere ganci specifici per la lingua profondamente integrati. È difficile da implementare come un semplice plug-in (sebbene si possa obiettare che questo è esattamente ciò che fa VS Code). 

Alcuni ambienti di sviluppo popolari che hanno aggiunto il supporto Go sono:

  • Eclisse
  • Atomo
  • Parentesi
  • Komodo
  • Nuvola 9

Editor di testo

Go è un linguaggio semplice. Molte persone si sentono molto produttive solo usando un editor di testo, possibilmente con alcuni plugin Go aggiuntivi. Non considero quegli ambienti di sviluppo realmente integrati. Ma ha senso se hai molti anni di esperienza con il tuo editor di testo, lo hai già personalizzato a tuo piacimento e lo usi per molte altre attività. Ecco una lista di alcuni dei più popolari editor di testo e dei loro plugin Go:

Emacs

Con i seguenti plugin: 

  • go-mode
  • Controllo sintassi GoFlyMake in stile Flymake per Go
  • go-errcheck.el Integrazione Errcheck per Emacs

Testo sublime 

Con il plugin GoSublime  

Vim e NeoVim 

Con una pletora di plugin Go.

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

Conclusione

Go ha fatto molta strada e ha un robusto ecosistema che include molte opzioni per l'ambiente di sviluppo. Il debugger Delve fornisce una fantastica esperienza di debug interattivo ed è utilizzato dalla maggior parte degli IDE principali. Gioca con questi IDE e trova quello che fa per te. 

L'IDE giusto può rendere ancora più divertente lavorare con Go.