Limbajul de programare Go a evoluat mult de când a fost publicat pentru prima dată în 2009. Go 1.18 a fost o lansare foarte așteptată datorită suportului pentru generice și multe alte actualizări importante.
Go a lansat versiunea 1.18 în martie 2022. Iată detaliile despre cele mai semnificative schimbări.
Suport pentru generice
Programarea generică vă permite să scrieți funcții care pot accepta și returna tipuri mai flexibile.
Înainte de suport pentru generice, trebuia să precizați în mod explicit tipurile de parametri și tipurile returnate. Cea mai simplă formă de generice vă permite să specificați parametrii netipați:
funcPrintAnything[Orice](lucruT) {
fmt.Println(lucru)
}
Dar genericele oferă mult mai multă putere decât aceasta. Puteți declara aproape orice combinație și granularitate de tip pentru parametri. De exemplu, puteți utiliza constrângeri pachet pentru a scrie o funcție care operează pe orice valoare pe care o puteți comanda. Aceasta include int, floats și șiruri de caractere. Iată un exemplu care demonstrează sintaxa:
import "golang.org/x/exp/constraints"
funcMax[T constrângeri. Ordonat](intrare[]T) (maxT) {
pentru _, v := intrare interval {
dacă v > max {
max = v
}
}
întoarcere max
}
Rețineți că această funcție folosește tipul generic, constrângeri. Ordonat, pentru a declara parametrul și tipul de returnare.
Genericurile oferă incertitudine și flexibilitate în cod. Propunerea și modificările generice sunt compatibile cu versiunea inversă.
Testarea Fuzz
Fuzzing este o tehnica de testare a software-ului care validează un program cu date eronate, neașteptate sau imprevizibile.
The testarea pachetul introduce fuzzing în 1.18, așa că pentru a defini un fuzz, trebuie să îl importați din biblioteca standard:
import "testare"
După importarea testarea pachet, puteți transmite un identificator de tip *testare. F la funcția de testare.
functestFunc(f *testare. F) {
// Codul tau
}
Fuzzing generează parametrii de intrare pentru testarea codului. Rezultatul fuzzing-ului este imprevizibil, deoarece intrările nu sunt definite de utilizator. Fuzzing ar trebui să vă ajute să scrieți teste de cod mai bune și să detectați erori despre care nu știați că există.
Go Workspace Support
Spațiile de lucru sunt directoare cu cod sursă similar care alcătuiesc un proiect sau o unitate mai mare. Spațiile de lucru facilitează gestionarea și depanarea codului prin gruparea codului similar în funcție de funcționalitate.
În mod convențional, subdivizați proiectele Go în cod sursă (src) și fișiere executabile (cos). Lanțul de instrumente Go construiește codul sursă din primul în executabile în cel de-al doilea. Spațiile de lucru Go permit dezvoltatorilor să lucreze cu mai multe spații de lucru folosind module Go cu un anumit modul principal.
Comanda pentru crearea spațiilor de lucru este:
$ mergi la munca <comanda>
Folosește muncă comandă cu subcomenzi precum:
- init → creează un spațiu de lucru în directorul specificat.
- utilizare → adaugă un nou modul la go.work, fișierul go workspace.
- Editați | × → editează fișierul go workspace.
- sincronizare → sincronizează dependențele din lista de build cu modulele spațiului de lucru.
Includerea de spații de lucru pentru a merge ar crește productivitatea așa cum a fost planificat în dezvoltarea limbajului.
Imbunatatiri ale performantei
Merge versiunea 1.18 acceptă acum ARM64 Apple M1 și PowerPC pe 64 de biți în convenția de apelare ABI. Acest lucru are ca rezultat un câștig de peste 10% în performanța procesorului pentru utilizatorii acestor dispozitive.
Variabilele declarate și neutilizate în funcții sunt acum înregistrate ca erori la compilarea programului.
The mergi sa construiesti comanda, împreună cu alte comenzi asociate, acceptă -asan flag, care acceptă interoperabilitatea cu C/C++. Acest lucru îi va ajuta pe dezvoltatorii Go să folosească programele Go cu programe C și C++.
Alte actualizări importante
The du-te și ia comanda nu mai instalează pachete în modul conștient de modul, ceea ce reprezintă o schimbare majoră față de momentul în care dvs am început mai întâi cu Go. The mergi sa instalezi comanda înlocuiește obține pentru a ajusta dependențele modulelor în spațiile de lucru.
Deoarece verificatorul de tip se ocupă acum de generice, mesajele de eroare se pot înregistra diferit față de versiunile anterioare.
Timpul necesar pentru compilarea programelor poate fi mai lent în 1.18. Dar acest lucru nu va afecta timpul de execuție odată ce Go a compilat programul.
Puteți găsi detaliile complete ale tuturor celor mai recente modificări în notele de lansare pentru Du-te 1.18.
Go 1.18 are mai multe completări diverse
Folosind Go 1.18, acum puteți scrie cod generic, puteți testa eficient folosind fuzzing și puteți comuta între modulele Go folosind spațiile de lucru. Puteți chiar să scrieți cod care funcționează împreună cu programele C și C++.
Merită Golang învățat astăzi?
Citiți în continuare
Subiecte asemănătoare
- Programare
- Programare
- Limbaje de programare
Despre autor
Aboneaza-te la newsletter-ul nostru
Alăturați-vă buletinului nostru informativ pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Click aici pentru a te abona