Go là một ngôn ngữ lập trình hướng thủ tục. Ngôn ngữ này được phát triển vào năm 2007 bởi Robert Griesemer, Rob Pike và Ken Thompson tại Google, nhưng được ra mắt vào năm 2009 dưới dạng ngôn ngữ lập trình mã nguồn mở. Các chương trình được xây dựng bằng cách sử dụng gói, để quản lý hiệu quả thành phần phụ thuộc. Ngôn ngữ Golang cũng hỗ trợ mẫu áp dụng môi trường giống như các ngôn ngữ dynamic. Ví dụ: suy luận kiểu (y := 0 là một khai báo hợp lệ của một biến y thuộc kiểu int).
Golang được thiết kế để đơn giản, hiệu quả và dễ học, khiến nó trở thành lựa chọn phổ biến để xây dựng các dịch vụ mạng có thể mở rộng, ứng dụng web và công cụ dòng lệnh.
Go được biết đến với khả năng hỗ trợ đồng thời, tức là khả năng chạy nhiều tác vụ cùng lúc. Đồng thời đạt được trong Go thông qua việc sử dụng Goroutine và Channel, cho phép bạn viết mã có thể chạy nhiều hoạt động cùng một lúc. Điều này khiến Go trở thành lựa chọn lý tưởng để xây dựng dịch vụ mạng có hiệu suất cao và khả năng mở rộng, cũng như để giải quyết các vấn đề tính toán phức tạp.
Một tính năng quan trọng khác của Go là thu gom rác, tự động quản lý bộ nhớ cho bạn. Điều này loại bỏ nhu cầu quản lý bộ nhớ thủ công, giảm khả năng rò rỉ bộ nhớ và lỗi khác có thể phát sinh từ việc quản lý bộ nhớ thủ công. Go thường được sử dụng để xây dựng hệ thống phân tán quy mô lớn và ứng dụng hiệu suất cao.
Tính năng chính của Golang
- Tính đơn giản: Go được thiết kế để dễ học và sử dụng. Cú pháp của nó đơn giản, dễ hiểu, nên phù hợp cho cả người mới bắt đầu và lập trình viên giàu kinh nghiệm.
- Đồng thời: Go có hỗ trợ đồng thời tích hợp, cho phép các nhà phát triển viết mã hiệu quả và có thể mở rộng cho các hệ thống đa lõi và phân tán.
- Thu gom rác: Go có quản lý bộ nhớ tự động, giúp các nhà phát triển không phải lo lắng về việc phân bổ và hủy phân bổ bộ nhớ.
- Thời gian biên dịch nhanh: Go có trình biên dịch nhanh, giúp dễ dàng lặp lại nhanh chóng trong quá trình phát triển.
- Hỗ trợ đa nền tảng: Go có thể được biên dịch để chạy trên nhiều nền tảng khác nhau, bao gồm Windows, Linux và macOS.
- Kiểu mạnh: Go là ngôn ngữ được gõ tĩnh, giúp phát hiện lỗi tại thời điểm biên dịch thay vì tại thời điểm chạy.
- Go có cộng đồng các nhà phát triển lớn và đang phát triển, được nhiều công ty nổi tiếng sử dụng, bao gồm Google, Uber và Dropbox.
Ví dụ một chương trình "Hello World!" đơn giản trong Go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Kết quả:
Hello, World!
Bắt đầu với lập trình Go
Có nhiều IDE trực tuyến như The Go Playground, repl.it, v.v. có thể được sử dụng để chạy các chương trình Go mà không cần cài đặt.
Để cài đặt Go trên PC hoặc Laptop của riêng bạn, chúng ta cần hai phần mềm sau: Trình soạn thảo văn bản và Trình biên dịch
Trình soạn thảo văn bản: Trình soạn thảo văn bản cung cấp cho bạn một nền tảng để viết mã nguồn. Sau đây là danh sách các trình soạn thảo văn bản có thể chạy Golang:
- Windows notepad
- OS Edit command
- Brief
- Epsilon
- vm hoặc vi
- Emacs
- VS Code
Tìm trình biên dịch Go: Bản phân phối Go có dạng nhị phân có thể cài đặt cho FreeBSD (phiên bản 8 trở lên), Linux, Mac OS X (Snow Leopard trở lên) và hệ điều hành Windows có kiến trúc bộ xử lý x86 32 bit (386) và 64 bit (amd64).
Ưu và nhược điểm của Golang
Ưu điểm của ngôn ngữ lập trình Go
- Linh hoạt – Ngắn gọn, đơn giản và dễ đọc.
- Đồng thời – Cho phép nhiều quy trình chạy đồng thời và hiệu quả.
- Kết quả nhanh – Thời gian biên dịch rất nhanh.
- Thư viện – Cung cấp thư viện chuẩn phong phú.
- Thu gom rác – Đây là tính năng chính của Go. Go nổi trội trong việc cung cấp nhiều quyền kiểm soát đối với việc phân bổ bộ nhớ và đã giảm đáng kể độ trễ trong các phiên bản gần đây nhất của trình thu gom rác.
- Xác thực giao diện và kiểu nhúng.
- Hiệu suất: Go được thiết kế để chạy nhanh và hiệu quả, tập trung vào hiệu suất và sử dụng bộ nhớ thấp. Điều này làm cho Go rất phù hợp để xây dựng các dịch vụ mạng hiệu suất cao cũng như giải quyết các vấn đề tính toán phức tạp.
- Đơn giản: Go có cú pháp đơn giản và hệ thống kiểu đơn giản, giúp dễ học và sử dụng, ngay cả đối với những người chưa có kinh nghiệm lập trình trước đó.
Nhược điểm ngôn ngữ lập trình Go
- Nó không hỗ trợ cho các kiểu chung, ngay cả khi có nhiều cuộc thảo luận về nó.
- Các gói được phân phối với ngôn ngữ lập trình này khá hữu ích nhưng Go không hướng đối tượng theo nghĩa thông thường.
- Không có một số thư viện, đặc biệt là bộ công cụ UI.
- Các tính năng hướng đối tượng hạn chế.
- Thư viện chuẩn chưa hoàn thiện.
Một số ứng dụng phổ biến được phát triển bằng Ngôn ngữ Go
- Docker: một bộ công cụ để triển khai các vùng chứa Linux
- Openshift: một nền tảng điện toán đám mây dưới dạng dịch vụ của Red Hat.
- Kubernetes: Tương lai của các quy trình triển khai tự động hóa liền mạch
- Dropbox: đã di chuyển một số thành phần quan trọng của họ từ Python sang Go.
- Netflix: cho hai phần kiến trúc máy chủ của họ.
- InfluxDB: là cơ sở dữ liệu chuỗi thời gian nguồn mở do InfluxData phát triển.
- Golang: Bản thân ngôn ngữ được viết bằng Go.