Bahasa pemrograman Go 1.18 yang sangat dinantikan akhirnya diluncurkan sebagai rilis produksi, yang menampilkan kemampuan generiknya yang inovatif. Ini menandai perubahan paling signifikan pada bahasa pemrograman Go sejak peluncuran awal Go 1.0 pada tahun 2012. Go 1.18 dapat diunduh di go.dev mulai tanggal 15 Maret.
Generik telah menjadi fitur yang paling banyak diminta oleh pemrogram Go, menawarkan dukungan untuk kode generik menggunakan tipe berparameter. Rilis selanjutnya dijadwalkan untuk memberikan dukungan lebih lanjut untuk kasus penggunaan umum yang lebih rumit. Pengguna dapat mengakses informasi tentang fitur ini melalui tutorial generik dan catatan rilis .
Server bahasa Go, gopls, bersama dengan ekstensi Visual Studio Code Go, sekarang mendukung generik. Untuk petunjuk penginstalan gopl dengan obat generik, lihat dokumentasi.
Rilis produksi Go 1.18 mengikuti tahap beta dan kandidat rilisnya. Rilis awal telah diantisipasi untuk Februari 2022 tetapi ditunda hingga pertengahan Maret. Go 1.18 Beta 1, yang memulai debutnya pada tanggal 14 Desember, adalah rilis pratinjau terdepan dari bahasa sumber terbuka yang dikembangkan Google untuk mendukung kode umum menggunakan tipe parameter. Versi beta ini juga merupakan Go beta yang paling banyak diunduh, dengan unduhan dua kali lebih banyak dari rilis beta sebelumnya.
Pemrograman generik adalah peningkatan yang memungkinkan representasi fungsi dan struktur data dalam bentuk generik dengan tipe yang difaktorkan. Ini memfasilitasi pembagian kode dan menyederhanakan pembuatan program.
Tim Go menyarankan kehati-hatian saat mendekati kemampuan generik baru, karena bug baru dapat muncul dengan fitur baru yang signifikan. Selain itu, dukungan untuk kasus halus tertentu, seperti jenis generik rekursif tertentu, telah ditangguhkan untuk rilis mendatang.
Terlepas dari peringatan ini, pengadopsi awal dilaporkan puas dengan fitur baru tersebut. Sebuah tutorial singkat untuk memulai dengan obat generik telah diterbitkan di sini . Meskipun Go memiliki tipe antarmuka, suatu bentuk pemrograman generik, Go tidak memiliki aspek tertentu yang diinginkan pengembang Go dari generik, seperti yang dilaporkan dalam postingan blog Juli 2019. Misalnya, pendukung generik Go mencari fungsi seperti Reverse tanpa memperhatikan jenis elemen dari sebuah slice.
Catatan yang dirilis untuk Go 1.18 juga menyoroti fitur utama lainnya, seperti:
- Dukungan bawaan untuk menulis tes berbasis fuzzing untuk mengidentifikasi input yang menyebabkan program mogok atau mengembalikan jawaban yang tidak valid. Fitur ini bersifat eksperimental di Go 1.18.
- Mode ruang kerja Go memungkinkan pengembang untuk bekerja dengan beberapa modul Go secara bersamaan, penting untuk proyek yang lebih ekstensif.
- Perintah go version -m yang ditingkatkan yang sekarang merekam detail build, seperti flag compiler.
- Variabel lingkungan GOAMD64 memungkinkan pengguna untuk memilih dari empat versi arsitektur AMD64.
- Peningkatan kinerja CPU pada Apple M1, ARM64, dan PowerPC64 sebanyak 20%, disebabkan oleh perluasan konvensi panggilan ABI register Go 1.17 ke arsitektur ini.
- Port Windows/Arm dan Windows/Arm64 sekarang mendukung pre-emption non-kooperatif, membuat kemampuan ini tersedia untuk keempat port Windows dan berpotensi mengatasi bug halus yang ditemui saat memanggil fungsi Win32 yang memblokir untuk waktu yang lama.
- Overhead pengumpulan sampah yang lebih dapat diprediksi saat sumber non-heap dari pekerjaan GC signifikan, karena penyertaan sumber ini saat menentukan frekuensi pengumpulan sampah berjalan.
Go 1.17 dirilis pada bulan Agustus. Go terkenal karena penggunaannya dalam pengembangan sistem kontainer Docker dan dirancang untuk menjadi bahasa pemrograman yang sederhana dan mudah dipelajari dengan dukungan kuat untuk konkurensi. Bagi pengembang yang ingin menjelajahi solusi no-code, seperti platform AppMaster, untuk membuat aplikasi web, seluler, dan backend, ini dapat membantu mempercepat pengembangan aplikasi dan mengurangi biaya sambil menghilangkan utang teknis.