Ngôn ngữ lập trình Go 1.18 rất được mong đợi cuối cùng đã được ra mắt dưới dạng bản phát hành sản xuất, có các khả năng chung đột phá của ngôn ngữ này. Điều này đánh dấu sự thay đổi quan trọng nhất đối với ngôn ngữ lập trình Go kể từ lần ra mắt đầu tiên của Go 1.0 vào năm 2012. Bạn có thể tải xuống Go 1.18 tại go.dev kể từ ngày 15 tháng 3.
Generics là tính năng được các lập trình viên Go yêu cầu nhiều nhất, cung cấp hỗ trợ cho mã chung sử dụng các loại được tham số hóa. Các bản phát hành tiếp theo dự kiến sẽ cung cấp hỗ trợ thêm cho các trường hợp sử dụng chung phức tạp hơn. Người dùng có thể truy cập thông tin về tính năng này thông qua hướng dẫn chung và ghi chú phát hành .
Máy chủ ngôn ngữ Go, gopls, cùng với tiện ích mở rộng Visual Studio Code Go, hiện hỗ trợ chung chung. Để biết hướng dẫn cài đặt gopl với thuốc generic, hãy tham khảo tài liệu.
Bản phát hành sản xuất Go 1.18 theo dõi các giai đoạn thử nghiệm và bản phát hành thử nghiệm. Bản phát hành ban đầu đã được dự đoán vào tháng 2 năm 2022 nhưng đã bị trì hoãn cho đến giữa tháng 3. Go 1.18 Beta 1, ra mắt vào ngày 14 tháng 12, là bản phát hành xem trước quan trọng nhất của ngôn ngữ nguồn mở do Google phát triển để hỗ trợ mã chung sử dụng các loại được tham số hóa. Phiên bản beta này cũng là phiên bản Go beta được tải xuống nhiều nhất từ trước đến nay, với số lượt tải xuống cao gấp đôi so với bất kỳ bản phát hành beta nào trước đó.
Lập trình chung là một cải tiến cho phép biểu diễn các hàm và cấu trúc dữ liệu ở dạng chung với các loại được phân tích. Điều này tạo điều kiện thuận lợi cho việc chia sẻ mã và đơn giản hóa việc xây dựng chương trình.
Nhóm Go khuyên nên thận trọng khi tiếp cận các khả năng chung mới, vì các lỗi mới có thể xuất hiện với bất kỳ tính năng mới quan trọng nào. Hơn nữa, hỗ trợ cho các trường hợp tế nhị cụ thể, chẳng hạn như một số loại kiểu chung đệ quy nhất định, đã được hoãn lại cho các bản phát hành trong tương lai.
Bất chấp cảnh báo này, những người dùng đầu tiên đã hài lòng với tính năng mới. Một hướng dẫn ngắn gọn về cách bắt đầu sử dụng thuốc generic đã được xuất bản tại đây . Mặc dù Go có các loại giao diện, một dạng lập trình chung, nhưng nó thiếu một số khía cạnh nhất định mà các nhà phát triển Go muốn từ các loại chung, như đã báo cáo trong một bài đăng trên blog vào tháng 7 năm 2019. Ví dụ, những người ủng hộ Go generic đã tìm kiếm các chức năng như Reverse mà không cần quan tâm đến loại phần tử của một lát cắt.
Các ghi chú đã phát hành cho Go 1.18 cũng nêu bật các tính năng chính khác của nó, chẳng hạn như:
- Hỗ trợ tích hợp để viết các bài kiểm tra dựa trên fuzzing để xác định đầu vào khiến chương trình gặp sự cố hoặc trả về câu trả lời không hợp lệ. Tính năng này đang được thử nghiệm trong Go 1.18.
- Chế độ không gian làm việc Go cho phép các nhà phát triển làm việc đồng thời với nhiều mô-đun Go, điều cần thiết cho các dự án mở rộng hơn.
- Lệnh go version -m nâng cao hiện ghi lại chi tiết bản dựng, chẳng hạn như cờ trình biên dịch.
- Biến môi trường GOAMD64 cho phép người dùng chọn từ bốn phiên bản của kiến trúc AMD64.
- Các cải tiến về hiệu suất CPU trên Apple M1, ARM64 và PowerPC64 lên tới 20%, nhờ vào việc mở rộng quy ước gọi ABI đăng ký Go 1.17 cho các kiến trúc này.
- Các cổng Windows/Arm và Windows/Arm64 hiện hỗ trợ quyền ưu tiên không hợp tác, làm cho khả năng này có sẵn cho cả bốn cổng Windows và có khả năng giải quyết các lỗi tinh vi gặp phải khi gọi các chức năng Win32 bị chặn trong thời gian dài.
- Chi phí thu gom rác dễ dự đoán hơn khi các nguồn GC không phải heap hoạt động đáng kể, do việc bao gồm các nguồn này khi xác định tần suất chạy thu gom rác.
Go 1.17 được phát hành vào tháng 8. Go được biết đến nhiều nhất nhờ được sử dụng trong quá trình phát triển hệ thống bộ chứa Docker và được thiết kế để trở thành một ngôn ngữ lập trình đơn giản, dễ học với khả năng hỗ trợ đồng thời mạnh mẽ. Đối với các nhà phát triển muốn khám phá các giải pháp no-code, chẳng hạn như nền tảng của AppMaster, để tạo các ứng dụng web, di động và phụ trợ, nó có thể giúp tăng tốc độ phát triển ứng dụng và giảm chi phí đồng thời loại bỏ nợ kỹ thuật.