Go 1.22 telah dirilis, pelajari fitur-fitur baru dan peningkatannya

goland

Go adalah bahasa pemrograman terkompilasi bersamaan dengan pengetikan statis yang terinspirasi oleh sintaks C.

Versi baru dari Go 1.22, hadir enam bulan setelah versi 1.21, dengan sejumlah perubahan penting pada perangkat, waktu proses, peningkatan pengoptimalan, peningkatan kompiler, dan pustaka.

Bagi mereka yang tidak tahu tentang Go, saya harus memberi tahu Anda bahwa ini adalahIni adalah bahasa pemrograman yang sedang dikembangkan oleh Google dengan partisipasi komunitas sebagai solusi hybrid yang menggabungkan kinerja tinggi dari bahasa yang dikompilasi dengan keunggulan seperti bahasa skrip seperti kemudahan penulisan kode, kecepatan pengembangan, dan perlindungan terhadap kesalahan.

Fitur baru utama Go 1.22

Dalam versi baru ini, yang diperkenalkan dari Go 1.22, ada sorotan dua perubahan pada loop "untuk".Sebagai Sebelumnya, variabel yang dideklarasikan oleh perulangan for dibuat satu kali dan diperbarui di setiap iterasi. Di Go 1.22, setiap iterasi perulangan menciptakan variabel baru untuk menghindari kesalahan berbagi yang tidak disengaja, sebagai tambahan Menambahkan dukungan eksperimental (GOEXPERIMENT=rangefunc) untuk fungsi rentang ke loop for, yang memungkinkan Anda menentukan fungsi sebagai iterator dan menyelesaikan masalah lama dengan for loop yang menyebabkan panggilan coroutine untuk berbagi variabel loop antar iterasi. Selain itu, perulangan for sekarang dapat melakukan perulangan melalui bilangan bulat. Misalnya:

paket main import "fmt" func main() { for i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 lepas landas!") }

Perubahan penting lainnya dalam versi baru ini adalah pengenalan kemampuan untuk menggunakan direktori «penjaja« yang berisi dependensi ruang kerja. Sekarang perintahnya Anda dapat menggunakan direktori ini, yang dibuat dengan `pergi kerja vendor` dan digunakan dalam perintah build kapan ` disetel-mod` di «penjaja«, ini adalah nilai default ketika sebuah direktori ada «penjaja» di ruang kerja.

Penting untuk dicatat bahwa fungsionalitas `pergi dapatkan` tidak lagi didukung di luar modul dalam mode GOPATH diwarisi Namun, perintah build lainnya seperti `pergi membangun` dan `pergi uji` Mereka akan terus bekerja tanpa batas waktu untuk program GOPATH yang lama. Selanjutnya perintah `pergi mod init` tidak akan lagi mencoba mengimpor persyaratan modul dari file konfigurasi lainnya «“penjualan” (seperti Gopkg.lock).

Go 1.22 memperkenalkan a paket baru io/tidak aman yang menyediakan fungsionalitas untuk bekerja dengan pointer dan memori tidak aman. Paket ini menyediakan metode untuk mengonversi pointer ke dan dari tipe aman dan tidak aman, serta untuk melakukan operasi penyalinan memori tanpa pemeriksaan batas.

Pekerjaan dilanjutkan untuk memasukkan optimasi pada kompiler berdasarkan hasil ppembuatan profil kode PGO, dan apakah itu sekarang kompiler menggunakan alat devirtualisasi untuk menggantikan panggilan tidak langsung dari berbagai metode dengan eksekusi blok inline yang diperluas. Ketika PGO diaktifkan, perubahan tambahan meningkatkan kinerja sebagian besar program sebesar 2% hingga 14%.

Dalam versi Gunakan Windows, program yang menghubungkan atau memuat perpustakaan Bangun dengan -buildmode=c-arsip o -buildmode=c-dibagikan sekarang dapat menggunakan API Event Logging Windows (ETW). melalui paket baru waktu proses/jejak y pelacak, yang mengimplementasikan protokol pengumpulan jejak peristiwa Go sebagai penyedia ETW.

Dari perubahan lain yang menonjol:

  • Perintah pergi tes -tutup sekarang mencetak ringkasan cakupan untuk paket tercakup yang tidak memiliki file pengujiannya sendiri.
  • os/eksekutif, kemampuan untuk menentukan atribut konteks telah ditambahkan, memungkinkan Anda menetapkan nilai seperti direktori kerja, variabel lingkungan, dan deskriptor file input/output untuk perintah yang dijalankan.
  • Manajemen memori yang dioptimalkan saat runtime, menghasilkan peningkatan kinerja sebesar 1-3% dan pengurangan konsumsi memori sebesar 1% untuk sebagian besar aplikasi.
  • El paquete bersih/http, fungsinya telah ditambahkan TutupIdleConnections ke klien HTTP, yang menutup semua koneksi menganggur yang baru-baru ini digunakan klien
  • Implementasi eksperimental yang ditingkatkan (GOEXPERIMENT=newinliner) dari mekanisme penyisipan panggilan telah ditambahkan ke kompiler, yang menggunakan heuristik untuk memisahkan operasi penting dari operasi yang tidak penting.
  • Paket telah ditambahkan » matematika/rand/v2 » ke perpustakaan standar, yang menawarkan API yang lebih konsisten dan menggunakan algoritma yang lebih cepat untuk menghasilkan angka pseudorandom.
  • El paquete net/http.ServeMux Menambahkan kemampuan untuk menentukan metode dan masker dalam templat.

Akhirnya, jika Anda tertarik untuk mengetahuinya lebih jauh, Anda dapat memeriksa detailnya Di tautan berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.