SDB:Go

Go

Riguardo Go

Go è un linguaggio e ambiente di programmazione (progettato da Robert Griesemer, Rob Pike e Ken Thompson) in grado di creare software semplice, affidabile ed efficiente.

Go è un linguaggio di programmazione espressivo, concorrente, garbage collected, type e memory safe. Ha i puntatori ma non ne supporta l'aritmetica. Inoltre, è progettato per compilare velocemente anche su hardware modesto, la memoria viene gestita dal garbage collector, ha una sintassi pulita, metodi di ogni tipo e run-time reflection. Lo si percepisce come un linguaggio dinamico ma ha la velocità e la sicurezza di un linguaggio statico.

Installazione e inizio

Cambia l'editor usato di seguito con il tuo preferito (Vim, Kate, gEdit, jEdit, Emacs...).

Nota: Solo le versioni Factory e 12.2 di openSUSE attualmente hanno i pacchetti di Go in versione 1.0.2 o maggiore, per la 12.1 sono disponibili nei repository di aggiornamento. Per Tumbleweed, SLES dovrai aggiungere il repository seguente: devel:languages:go. Dopo di che tramite Zypper o YaST puoi installare i pacchetti necessari:

zypper in go go-doc go-vim

IMPORTANTE: Il pacchetto di Go include uno script di shell per configurare le variabili d'ambiente per lo strumento di sviluppo. Questo script viene installato in /etc/profile.d/go.sh ma le variabili non saranno importate finché o non usi source su questo file o avvii una nuova sessione di login. Sia una che l'altra procedura ti permetteranno di importare le variabili d'ambiente nel tuo sistema. Puoi verificare che il sistema sia configurato controllando i valori delle seguenti variabili:

   env | grep GO

E dovrebbe darti come risultato qualcosa di simile:

   GOBIN=/home/ganderson/go/bin
   GOROOT=/usr/lib64/go
   GOOS=linux
   GOPATH=/home/ganderson/go:/usr/lib64/go/contrib

Potresti opzionalmente passare sopra a queste locazioni modificando il tuo file .bashrc o .profile, per favore leggi la documentazione su GOPATH, specialmente se desideri cambiare queste directory, vedere:

go help gopath

Le librerie e i pacchetti di Go disponibili dal repository di openSUSE vengono installate in $GOROOT e nella directory bin di sistema. Gli altri pacchetti aggiuntivi o binari che installi usando il comando "go", saranno installati in $GOPATH e $GOBIN (se sono state impostate).

Attualmente $GOBIN per gli utenti non root è settata di default su $GOPATH/bin. Tale percorso non viene aggiunto automaticamente al tua variabile $PATH, quindi lo dovrai aggiungere al tuo file .bashrc/.profile, impostare un altro percorso oppure usare un link simbolico verso ~/bin.

Se non sei sicuro di ciò, dai un'occhiata alla documentazione al link seguente:

   http://golang.org/doc/code.html#GOPATH

Una volta installati i pacchetti, un'ottimo modo per verificare che tutto sia a posto è installare e avviare Go Tour. Se hai un ambiente Go funzionante i seguenti comandi dovrebbero venir eseguiti senza ritornare errori.

   go get code.google.com/p/go-tour/gotour
   gotour

Quando hai un ambiente funzionante, la seguente documentazione è un'ottima risorsa per gli hacker di Go alle prime armi:

   http://golang.org/doc/install#next

Per hacker esperti di C, C++ e Java, è raccomandata anche la lettura delle FAQ di Go:

   http://golang.org/doc/go_faq.html

Supporto

Homepage del progetto:

   http://golang.org

Comunità di supporto del linguaggio Go:

   Mailing List: http://groups.google.com/group/golang-nuts
   IRC: #go-nuts su freenode


Documentazione

Il pacchetto go-doc abilita l'utilizzo del server Godoc per la documentazione delle API. Puoi avviare il server della documentazione come un servizio (

systemctl start godoc.service

la porta sarà la 6060 di default) o manualmente, usa il comando

godoc --help

per ulteriori informazioni. Il servizio di systemd viene avviato con l'indicizzazione per la ricerca abilitata, in questo modo puoi voler usare godoc in modalità cli o avviarlo manualmente se sei su un sistema con una quantità limitata di RAM.

Ci scusiamo, ma attualmente non sono disponibili pagine man (stiamo lavorando su uno strumenti che converta la documentazione già esistente per i vari strumenti di Go nel formato groff). La documentazione relativa agli strumenti di sviluppo, ai comandi, alle API e alle specifiche del linguaggio sono tutti disponibili attraverso godoc o direttamente dal sito ufficiale su http://golang.org

Il pacchetto go-vim ha un plugin :Godoc, che integra Vim con godoc.

Strumenti di sviluppo

La maggior parte degli strumenti di sviluppo non si trovano nel tuo PATH, i programmi e i sorgenti vengono gestiti con il comando go, vedere godoc go oppure go help per ulteriori dettagli.

Di default usiamo i vari strumenti di compilazione/linking/packing inclusi in Go, attualmente, infatti, non è disponibile un'alternativa basata sul GCC come "gccgo". Puoi invocare questi strmenti direttamente se preferisci, vedere go tool, go help tool.

Pacchetti

Abbiamo un certo numero di pacchetti popolari/utili nel repository devel:languages:go. Raccomando di installare sempre le librerie di documentazione associate al pacchetto perché verranno integrate con il server godoc locale. In aggiunta a queste puoi navigare nella dashboard della comunità per ulteriori pacchetti:

   http://godashboard.appspot.com/project

Se trovi qualcosa da usare che non è nel repository devel:languages:go, faccelo sapere e provvederemo a includerlo noi stessi, oppure puoi direttamente farlo tu consultando la guida alla pacchettizzazione di Go e ai file .spec dal wiki:

  http://en.opensuse.org/openSUSE:Packaging_Go

Editor

Ci sono plugin per l'evidenziazione della sintassi negli editor: i pacchetti sono go-emacs, go-kate (più aggiornato del corrente file di sintassi di Kate), go-vim.

Nel repository devel:languages:go puoi trovare un pacchetto ctags aggiornato con il supporto per Go. Il pacchetto gocode, dello stesso repository, fornisce il supporto all'autocompletamento per Vim e Emacs.

Nota che Go abbraccia uno stile di codice universale, usa gli strumenti go fmt o gofmt per aiutarti con questo stile.

Membri del team