Aggiornato il: 27-06-2022 03:01
Go ha anche un altro nome, Golang (dove il nome significava Go Language, ovviamente), ma il suo nome proprio è Go, a causa del suo precedente nome di dominio, golang.org, ma il suo nome proprio è Go.
Dettagli sul funzionamento di Go
Go è un linguaggio di programmazione compilato e tipizzato in modo statico, progettato interamente dallo staff di programmatori di Google. Go è stato creato da Robert Griesemer, Rob Pike e Ken Thompson, che attualmente lavorano al progetto. Si tratta di un linguaggio sintatticamente molto simile a C, ma con una gestione migliorata della sicurezza sulla memoria, meccanismi di garbage collection, tipizzazione strutturata e programmazione concorrente in stile linguaggio CSP. Ci sono due implementazioni principali disponibili, una hosted by Google e l’altra da lanciare in autonomia: il motore software di Go è infatti disponibile come software open source.
Sintassi di Go
La sintassi di Go include aspetti tipici del linguaggio C, e non prevede l’uso di punti e virgola per delimitare le istruzioni (come in Python). àˆ stato introdotto un particolare operatore combinato di dichiarazione/inizializzazione che consente al programmatore di scrivere i := 2 o s := “Ciao Mondo!”, senza specificare i tipi, esattamente come avverrebbe in PHP.
Go aggiunge la possibilità di utilizare letterali per l’inizializzazione dei parametri struct in base al nome e per l’inizializzazione di map e tipi complessi o composti. In alternativa al ciclo for a tre istruzioni di C, le espressioni di intervallo di Go consentono un’iterazione concisa su array, sezioni, stringhe, mappe e canali.
Go offre inoltre una serie di tipi incorporati, inclusi quelli numerici (ad esempio byte, int64, float32), Booleani e stringhe di caratteri (stringa). Le stringhe sono immutabili, la codifica e decodifica è nativamente UTF-8. I tipi di record personalizzati possono essere definiti con la parola chiave struct, come abbiamo appena accennato
Per ogni tipo T e per ogni costante intera non negativa n, esiste un tipo di array indicato con [n]T; array di lunghezze diverse sono quindi di tipi diversi. Gli array dinamici sono disponibili come “slice”, indicati con []T per alcuni tipi T. Questi hanno una lunghezza e una capacità che specificano quando è necessario allocare nuova memoria per espandere l’array.
I puntatori sono disponibili per tutti i tipi e il tipo da puntatore a T è indicato con *T. L’assunzione di indirizzi e l’indirizzamento indiretto utilizzano gli operatori & e *, come in C, o avvengono implicitamente tramite la chiamata al metodo o la sintassi di accesso all’attributo. Non è consentito effettuare aritmetica del puntatore, se non tramite lo speciale tipo di variabile unsafe.Pointer nella libreria standard di Go.
Un esempio di funzione in Go è la seguente, che verifica se l’indirizzo IPv4 che gli passi sia di broadcast oppure no:
func (addr ipv4addr) ZeroAddress() bool { return addr == 0xFFFFFFFF }
Cosa si può fare in Go
Con Go è possibile realizzare sia applicazioni a linea di comando che applicazioni web, eventualmente sfruttando GopherJS che permette di tradurre automaticamente Go in Javascript. All’interno del sito ufficiale è possibile testare il codice direttamente nel sito, realizzando un semplice Hello, World! con poche righe di codice:
package main import "fmt" func main() { fmt.Println("Hello, amicone del cuore") }
Il risultato è il seguente.
Se invece volessimo fare la stessa cosa lato web, si potrebbe fare in questi termini:
package main import ( "fmt" "log" "net/http" ) func helloFunc(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello world!") } func main() { http.HandleFunc("/", helloFunc) log.Fatal(http.ListenAndServe(":8080", nil)) }
Dove e come scaricare Go
Photo by Max Duzij on Unsplash
Tutorial, approfondimenti tematici e notizie in ambito tecnologico. Questo articolo non riporta necessariamente pareri o endorsement da parte del proprietario del sito stesso. Per contatti clicca qui