Il linguaggio di programmazione Go si è evoluto molto da quando è stato pubblicato per la prima volta nel 2009. Go 1.18 era una versione molto attesa grazie al supporto per i generici e molti altri importanti aggiornamenti.

Go ha rilasciato la versione 1.18 a marzo 2022. Ecco i dettagli sui cambiamenti più significativi.

Supporto ai generici

La programmazione generica consente di scrivere funzioni che possono accettare e restituire tipi più flessibili.

Prima del supporto per i generics, era necessario dichiarare in modo esplicito i tipi di parametro e restituire i tipi. La forma più semplice di generici consente di specificare parametri non tipizzati:

funzStampa qualsiasi cosa[Nessuno](cosaT) {
fmt.Stampa(cosa)
}

Ma i generici offrono molto più potere di questo. È possibile dichiarare quasi tutte le combinazioni e la granularità di tipo per i parametri. Ad esempio, puoi usare il vincoli pacchetto per scrivere una funzione che opera su qualsiasi valore che puoi ordinare. Ciò include int, float e stringhe. Ecco un esempio che dimostra la sintassi:

instagram viewer
importare "golang.org/x/exp/constraints"

funzMassimo[vincoli a T. Ordinato](ingresso[]T) (maxT) {
per _, v := intervallo di input {
se v > massimo {
massimo = v
}
}

Restituzione max
}

Si noti che questa funzione utilizza il tipo generico, vincoli. Ordinato, per dichiararne il parametro e il tipo restituito.

I generici forniscono incertezza e flessibilità nel codice. La proposta e le modifiche di Generics sono compatibili con le versioni precedenti.

Test Fuzz

Fuzzing è un tecnica di test del software che convalida un programma con dati errati, imprevisti o imprevedibili.

Il test il pacchetto introduce il fuzz in 1.18, quindi per definire un fuzz, devi importarlo dalla libreria standard:

importare "test"

Dopo aver importato il test pacchetto, puoi passare un identificatore di tipo *test. F alla funzione di prova.

funztestFunc(f *test. F) {
// il tuo codice
}

Fuzzing genera parametri di input per il test del codice. Il risultato del fuzzing è imprevedibile poiché gli input non sono definiti dall'utente. Il fuzzing dovrebbe aiutarti a scrivere test del codice migliori e rilevare bug di cui non sapevi l'esistenza.

Vai al supporto per l'area di lavoro

Gli spazi di lavoro sono directory di codice sorgente simile che costituiscono un progetto o un'unità più grande. Le aree di lavoro semplificano la gestione e il debug del codice raggruppando codice simile in base alla funzionalità.

Convenzionalmente, suddividi i progetti Go in codice sorgente (src) e file eseguibili (bidone). La toolchain Go costruisce il codice sorgente dal primo in eseguibili nel secondo. Gli spazi di lavoro Go consentono agli sviluppatori di lavorare con più spazi di lavoro utilizzando i moduli Go con un particolare modulo principale.

Il comando per la creazione degli spazi di lavoro è:

$ vai a lavorare <comando>

Usa il lavoro comando con sottocomandi come:

  • dentro → crea uno spazio di lavoro nella directory specificata.
  • utilizzo → aggiunge un nuovo modulo a go.work, il file go workspace.
  • modificare → modifica il file dell'area di lavoro go.
  • sincronizzare → sincronizza le dipendenze dall'elenco di build ai moduli dell'area di lavoro.

L'inclusione di spazi di lavoro da utilizzare aumenterebbe la produttività come pianificato nello sviluppo della lingua.

Miglioramenti delle prestazioni

andare la versione 1.18 ora supporta ARM64 Apple M1 e PowerPC a 64 bit nella convenzione di chiamata ABI. Ciò si traduce in un aumento di oltre il 10% delle prestazioni della CPU per gli utenti di questi dispositivi.

Le variabili dichiarate e non utilizzate nelle funzioni vengono ora registrate come errori durante la compilazione del programma.

Il vai a costruire Il comando, insieme ad altri comandi correlati, supporta il -asan flag, che supporta l'interoperabilità con C/C++. Questo aiuterà gli sviluppatori Go a utilizzare i programmi Go con i programmi C e C++.

Altri importanti aggiornamenti

Il vai a prendere il comando non installa più i pacchetti in modalità sensibile al modulo, il che è un grande cambiamento rispetto a quando iniziato con Go. Il vai a installare il comando sostituisce ottenere per regolare le dipendenze dei moduli tra gli spazi di lavoro.

Poiché il controllo del tipo ora gestisce i generici, i messaggi di errore potrebbero essere registrati in modo diverso rispetto alle versioni precedenti.

Il tempo impiegato per la compilazione dei programmi potrebbe essere più lento in 1.18. Ma questo non influirà sul tempo di esecuzione una volta che Go avrà compilato il tuo programma.

Puoi trovare i dettagli completi di tutte le ultime modifiche nelle note di rilascio per Vai 1.18.

Go 1.18 ha diverse aggiunte diverse

Usando Go 1.18, ora puoi scrivere codice generico, testare in modo efficiente usando fuzzing e passare da un modulo Go all'altro usando gli spazi di lavoro. Puoi persino scrivere codice che funzioni in combinazione con programmi C e C++.

Vale la pena imparare Golang oggi?

Leggi Avanti

CondividereTwittaCondividereE-mail

Argomenti correlati

  • Programmazione
  • Programmazione
  • Linguaggi di programmazione

Circa l'autore

Personale MUO

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti