Guida Golang: A List of Top Golang Frameworks, IDEs & Tools
Dalla sua introduzione, il linguaggio di programmazione Go di Google (Golang) ha sperimentato una crescente popolarità tra gli utenti mainstream. In un sondaggio del dicembre 2016, l’89% dei 3.595 intervistati ha dichiarato di programmare in Go al lavoro o fuori dal lavoro.
Inoltre, Go è al primo posto tra i linguaggi di programmazione in termini di competenza e preferenza. Questo luglio 2017, Go si posiziona al 10° posto nel linguaggio di programmazione dell’anno di Tiobe, saltando dal 55° posto dell’anno scorso.
E’ chiaro che Go sta attirando molti programmatori di varie discipline e professionisti dell’outsourcing dello sviluppo software. Ed è sicuro di dire che questo è dovuto alla facilità di utilizzo di Go.
Come linguaggio di programmazione compilato e open-source, Go rende facile per gli sviluppatori costruire software semplice, affidabile ed efficiente. È il prodotto dell’innovazione e dell’evoluzione dei linguaggi più conservatori come C e C++.
Con Go, la quantità di codice digitato è ridotta e scrivere API robuste senza sacrificare le prestazioni è diventato più facile. Progettato per la scalabilità e la concorrenza, Go rende possibili le ottimizzazioni. Un compilatore può eseguire tutto il lavoro di ispezione del codice prima del runtime.
Abbiamo compilato una lista dei migliori framework, IDE e strumenti per Golang per il vostro riferimento rapido. Aggiungilo ai segnalibri del tuo browser in modo da poter tornare ogni volta che stai lavorando con Go!
Frameworks for Golang
I frameworks web aiutano gli sviluppatori a costruire applicazioni nel modo più semplice e veloce possibile. Go è ancora relativamente nuovo, quindi è importante usare frameworks con sufficiente documentazione.
Qui ci sono 9 framework che puoi usare per aiutarti a costruire progetti usando il linguaggio Go.
Revel
Come framework ad alta produttività per Go, Revel include uno strumento Hot Code Reload che ti permette di ricostruire il tuo progetto ad ogni cambiamento di file. Include anche un’ampia varietà di caratteristiche complete e ad alte prestazioni, quindi non hai bisogno di trovare librerie esterne da integrare nel framework.
Beego
Beego è un framework MVC completo con la propria libreria di log, ORM e framework web. Non c’è bisogno di trovare e installare librerie di terze parti. È dotato di uno strumento integrato chiamato Bee Tool che controlla le modifiche al codice ed esegue le attività quando vengono rilevate le modifiche.
Beego ti farà risparmiare un sacco di ore, specialmente all’inizio di un progetto quando stai cercando di capire il framework di registrazione o la struttura dell’applicazione.
Martini
Ispirato a Sinatra, Martini è un framework estremamente leggero ma potente. È stato sviluppato per scrivere applicazioni e servizi web modulari in Golang.
Ha un design non intrusivo che è veloce e facile da usare e include una vasta gamma di gestori e middleware. È in grado di eseguire il routing di base, la gestione delle eccezioni e il servizio di documenti predefinito per le app AngularJS in modalità HTML5.
La caratteristica migliore di Martini è il suo uso della riflessione, che permette agli sviluppatori di inserire dinamicamente i dati nelle funzioni di gestione e aggiungere nuovi servizi. Martini è anche pienamente compatibile con l’interfaccia http.HandlerFunc. Lo svantaggio, però, è che il framework Martini non è più mantenuto.
Gin Gonic
Gin Gonic è un framework web con un’API simile a Martini, ma con prestazioni molto migliori. Se avete già usato Martini, allora avrete familiarità con Gin Gonic. Altrimenti, ti ci vorranno solo 10 minuti per imparare Gin. È così facile!
Gin Gonic è un framework minimalista che include solo le librerie e le caratteristiche più essenziali. Questo lo rende perfetto per sviluppare API REST ad alte prestazioni. Inoltre, è 40 volte più veloce di Martini.
Puoi aggiungere middleware, gruppi annidati, validazione JSON e rendering, ma mantiene comunque le sue prestazioni ottimali. Gin Gonic usa httprouter, il più veloce router HTTP per Go.
Buffalo
Costruire nuove applicazioni web con Go è semplice e veloce con Buffalo. Quando inizi un nuovo progetto, Buffalo ha già tutto pronto per te, dal front-end allo sviluppo del back-end.
È dotato di Hot Reloading, il che significa che il comando dev guarderà automaticamente i tuoi file .go e .html. Poi ricostruirà e riavvierà il tuo binario per te. Basta eseguire il comando dev, e vedrai i cambiamenti andare in diretta proprio davanti ai tuoi occhi!
Buffalo è più di un semplice framework – è un ecosistema olistico di sviluppo web che ti permette di costruire direttamente la tua applicazione.
Goji
Goji è un framework web leggero e veloce che ha come priorità principale la compostezza e la semplicità. Molto simile a net/http.ServeMux, Goji è un multiplexer di richieste HTTP minimalista. Include il supporto Einhorn, che rende possibile avere il supporto websocket in Goji.
Le caratteristiche aggiuntive includono modelli di URL, stack middleware riconfigurabile, spegnimento grazioso e altro. Goji può essere usato in produzione e ha servito miliardi di richieste in diverse organizzazioni.
Tiger Tonic
Ispirato da Dropwizard, Tiger Tonic è un framework Go per sviluppare servizi web JSON e costruire API REST ad alte prestazioni. Per rimanere fedele ai principi di Golang, Tiger Tonic si sforza di mantenere le caratteristiche ortogonali.
Lo svantaggio di Tiger Tonic è la sua inadeguatezza quando si tratta di costruire grandi applicazioni back-end.
Gocraft
Un altro framework potente ma minimalista, Gocraft offre prestazioni di routing veloci e scalabili. Aggiunge il routing al pacchetto net/http dalla libreria standard.
Gocraft è un pacchetto mux e middleware per Go che offre funzionalità di casting e reflection in modo da poter digitare staticamente il codice. Si può anche aggiungere una funzionalità opzionale con il middleware integrato o scrivere il proprio.
Siccome le prestazioni sono sempre una delle principali preoccupazioni per gli sviluppatori, Gocraft è una grande scelta per gli sviluppatori. È molto facile scrivere applicazioni web backend usando il framework Gocraft.
Mango
Anche se Mango non è attivamente mantenuto dal suo creatore, Paul Bellamy, molti utenti Go lo usano ancora. Il bello di Mango è la sua modularità. Puoi scegliere tra una varietà di librerie da includere nel tuo progetto.
Mango ti permette di costruire moduli riutilizzabili di funzionalità HTTP il più velocemente e facilmente possibile. Compila una lista di middleware e applicazioni in un singolo oggetto server http per mantenere il tuo codice autonomo.
Integrated Development Environment (IDE) per Golang
Gli IDE per Golang stanno guadagnando popolarità, insieme al linguaggio Go. Mentre molti sviluppatori preferiscono ancora usare gli editor di testo, molti preferiscono usare anche gli IDE.
Se state lavorando ad un progetto su larga scala con un codice esteso, un IDE può aiutarvi ad organizzare il vostro codice e a navigarlo con facilità. Inoltre, gli IDE possono aiutarti a testare il tuo codice e modificarlo di conseguenza.
Ecco i migliori IDE che funzionano alla grande con Golang.
Gogland
La società di sviluppo software JetBrains ha rilasciato un altro IDE affidabile, ma questa volta, per Golang. Gogland è un IDE commerciale che fornisce un robusto ambiente ergonomico per gli sviluppatori Go. Dispone anche di assistenza alla codifica, debugger e un terminale integrato.
Perché una società affermata ha creato Gogland, ha un ampio ecosistema di plugin IntelliJ dove è possibile ottenere strumenti aggiuntivi se si ha bisogno di più.
Visual Studio Code
Creato da Microsoft, Visual Studio Code è un IDE completo, open-source ed editor di codice che supporta una vasta gamma di linguaggi di programmazione. È dotato di completamento intelligente con IntelliSense; debugging utilizzando punti di interruzione, stack di chiamate e una console interattiva; integrazione Git integrata e cartella gerarchica ed esploratore di file.
Come un altro IDE popolare, Visual Studio Code ha una comunità di supporto di sviluppatori Go che contribuiscono regolarmente. Con Visual Studio Code, è possibile estendere le funzionalità con la serie di plugin disponibili.
LiteIDE
LiteIDE è tra i primi IDE open-source Golang-centrici che è stato creato più di 5 anni fa. Come applicazione C++ Qt con un look and feel unico, LiteIDE offre gestione del codice, comandi di compilazione configurabili, debugger gdb e Delve, autocompletamento e tematizzazione con WordApi, sistema basato sul tipo MIME e altro. Fornisce anche supporto JSON e Golang.
Wide
Wide è un IDE basato sul web per programmatori Golang. È progettato per lo sviluppo collaborativo e funziona meglio per i team e le agenzie di sviluppo web. Le caratteristiche di Wide includono l’evidenziazione del codice, il debug, l’integrazione con Git e molto altro.
Perché Wide è creato e mantenuto da uno sviluppatore cinese, la maggior parte della sua documentazione e del supporto sono in cinese.
Atom con go-plus plugin
Se stai già usando Atom, la tua esperienza di editing del codice in Golang può essere migliorata con un pacchetto open-source chiamato go-plus. Con go-plus, si ottiene un feedback istantaneo e in tempo reale sulla sintassi e sugli errori di compilazione.
Il pacchetto go-plus offre quasi tutto il supporto Golang in Atom. Può anche essere usato per strumenti, flussi di compilazione, linters, strumenti di controllo e copertura.
Go-plus include anche vari snippet di codice e caratteristiche come il completamento automatico con gocode, la formattazione del codice con gofmt, goreturns, o goimports, e altro ancora.
Eclipse con GoClipse
Perché Eclipse è un IDE molto popolare, sono stati creati numerosi plugin per esso. GoClipse è un plugin di Eclipse per Golang che offre l’editing del codice sorgente Go con evidenziazione della sintassi configurabile e completamento automatico dell’indentazione e delle parentesi.
GoClipse serve anche come un wizard di progetto e un costruttore che riporta istantaneamente gli errori di sintassi e di costruzione. Altre caratteristiche di GoClipse includono funzionalità di debug e assistenza al codice.
Sublime Text con GoSublime
Sublime Text è un altro sofisticato editor di testo con una grande comunità di collaboratori e sviluppatori. Come tale, una grande varietà di plugin è stata creata per questo IDE.
GoSublime è un plugin Golang per Sublime Text 3 che offre il completamento del codice da Gocode, il controllo della sintassi mentre stai scrivendo il codice, l’aggiunta e la rimozione automatica delle importazioni di pacchetti e altro ancora.
Vim con il plugin vim-go
Vim è un IDE gratuito e open-source che può essere personalizzato e configurato con vari plugin. Se sei un programmatore Golang, puoi usare Vim con il plugin vim-go creato da Fatih Arslan. Vim-go installa automaticamente tutti i binari necessari per fornire un’agevole integrazione di Vim per Golang.
Vim-go è una potente suite di plugin per scrivere e sviluppare Go. Le sue caratteristiche includono l’analisi avanzata del codice sorgente, l’aggiunta e la rimozione di percorsi di importazione, il supporto a più terze linee, la definizione di goto, l’esecuzione rapida dei file e molto altro ancora.
Vim-go è altamente personalizzabile, con caratteristiche individuali che possono essere abilitate o disabilitate secondo le proprie necessità.
Komodo
Komodo è un IDE completo per il linguaggio Go che supporta altri linguaggi di programmazione come Node.js, Python, Ruby, Perl e altri. Con questo IDE Go, è possibile scrivere codice pulito facilmente. Le sue caratteristiche includono un editor di codice avanzato, completamento intelligente del codice, controllo della sintassi, controllo della versione e test delle unità, e una Go Code Intelligence che permette la navigazione del codice e il suggerimento del codice.
La cosa grandiosa di Komodo è che funziona benissimo per la collaborazione in team, dal momento che più sviluppatori possono modificare un documento contemporaneamente. Komodo può essere installato su Mac, Windows o Linux con una sola licenza.
IntelliJ IDEA con il plugin di supporto per il linguaggio Go (golang.org)
IntelliJ IDEA (stessa azienda di JetBrains) è un IDE che può essere usato con Golang attraverso il plugin di supporto per il linguaggio Go. Se vuoi usare IntelliJ IDEA con Golang, devi installare questo plugin, anche se con caratteristiche limitate rispetto a Gogland.
Tools for Golang
Golang tools può essere usato per una grande varietà di progetti e applicazioni web. Gli sviluppatori possono scrivere codice e costruire applicazioni il più velocemente e facilmente possibile con questi utili strumenti.
Ecco una lista dei migliori strumenti di Golang per il tuo riferimento.
Apicompat
Apicompat è un nuovo strumento del linguaggio Go che aiuta gli sviluppatori a rilevare cambiamenti all’indietro, incompatibili e dichiarazioni esportate.
Con Apicompat, puoi evitare falsi positivi. Tuttavia, non tutti i cambiamenti incompatibili all’indietro possono essere rilevati da Apicompat. Lo scambio di parametri di argomento e altri cambiamenti devono ancora essere considerati dall’autore della libreria.
Checkstyle
Ispirato da Java Checkstyle, Checkstyle per Golang stampa suggerimenti sullo stile di codifica. Permette anche agli sviluppatori di controllare la linea/funzione del file e il numero di linea/param, che possono poi essere configurati dall’utente.
Depth
Depth è un altro utile strumento Golang che aiuta gli sviluppatori web a recuperare e visualizzare gli alberi di dipendenza del codice sorgente Go. Può essere usato come un’applicazione a riga di comando autonoma o come un particolare pacchetto all’interno del proprio progetto. Puoi aggiungere personalizzazioni semplicemente impostando i flag appropriati sull’albero prima di risolvere.
Go-Swagger
Questo toolkit include una grande varietà di caratteristiche e funzioni. Go-Swagger è un’implementazione di Swagger 2.0, e può serializzare e deserializzare le specifiche swagger. È una rappresentazione minimalista ma potente della vostra API RESTful.
Con Go-Swagger, potete documentare le specifiche swagger, validare contro jsonschema e altre regole extra. Altre caratteristiche includono la generazione di codice, la generazione di API basata sulle specifiche swagger, la generazione di documenti spec basati sul codice, formati di stringa estesi e altro.
Go Meta Linter
Se hai bisogno di eseguire strumenti Go lint e normalizzare il loro output contemporaneamente, questo è esattamente ciò che Go Meta Linter può fare per te. Go Meta Linter è destinato ad essere usato con un editor di testo o un’integrazione IDE come il plugin Sublime Linter, il pacchetto Atom go-plus, il checker Emacs Flycheck, Vim/Neovim, e Go per Visual Studio Code. Supporta anche un’ampia varietà di linters e file di configurazione come JSON.
Go-callvis
Go-callvis è uno strumento di sviluppo web che ti permette di visualizzare il grafico delle chiamate del tuo programma Go con il formato a punti di Graphviz. Questo strumento è particolarmente utile quando si costruiscono grandi progetti con codebase complessi. È anche utile quando si vuole capire la struttura del codice di un altro sviluppatore o ricostruire il progetto di qualcun altro.
Con go-callvis, gli sviluppatori possono focalizzare specifici pacchetti all’interno di un programma; raggruppare funzioni in base al pacchetto e metodi in base al tipo; e limitare i pacchetti a prefissi di percorso personalizzati, e ignorare quelli che li contengono.
Gonative
Gonative è un semplice strumento di Golang che permette di costruire catene di strumenti Go con librerie native, che possono essere cross-compilate utilizzando ancora le versioni abilitate da Cgo dei pacchetti stdlib.
Gonative scarica le distribuzioni binarie per ogni piattaforma e copia le loro librerie nei posti appropriati. Allo stesso tempo, Gonative imposta il corretto tempo di mod per evitare inutili ricostruzioni.
Purtroppo, Gonative rimane non testato su Windows. Inoltre, non viene fornito alcun supporto per Linux/arm.
Grapes
Grapes è un leggero strumento Golang progettato per distribuire facilmente comandi su ssh. È scritto e mantenuto attivamente da Yaron Sumel.
Grapes supporterà presto la validazione completa della chiave host, quindi è qualcosa a cui gli sviluppatori dovrebbero prestare attenzione.
Gosimple
La cosa bella di questo linter Golang è che si concentra sulla semplificazione del codice sorgente Go. Gosimple punta sempre all’ultima versione di Go, quindi richiede Go versione 1.6 o successiva.
Se c’è una nuova versione di Go, gosimple suggerirà i metodi più facili e semplici per evitare costrutti complicati.
Go Vendor
Go Vendor è lo strumento Golang che lavora con la cartella standard Vendor. Permette agli sviluppatori di copiare le dipendenze esistenti da $GOPATH con govendor add/update. Puoi anche tirare direttamente nuove dipendenze o aggiornare quelle esistenti con govendor fetch e spostare sistemi legacy con govendor migrate.
Wrapping It Up
Se vieni da un background JS/Node, devi imparare alcuni nuovi concetti di programmazione come coroutines, canali, tipizzazione rigorosa con compilazione, interfacce, structs, puntatori, e alcune altre differenze. Ma, una volta entrati nel solco, troverete Golang più facile e veloce da usare.