Documentation
Ngôn ngữ lập trình Go là một dự án mã nguồn mở nhằm giúp lập trình viên làm việc hiệu quả hơn.
Go có tính biểu đạt cao, súc tích, rõ ràng và hiệu quả. Các cơ chế đồng thời của Go giúp dễ dàng viết các chương trình khai thác tối đa khả năng của máy đa lõi và máy được kết nối mạng, trong khi hệ thống kiểu mới của Go cho phép xây dựng chương trình linh hoạt và theo mô-đun. Go biên dịch nhanh thành mã máy nhưng vẫn có sự tiện lợi của bộ gom rác và sức mạnh của phản chiếu thời gian chạy. Đây là một ngôn ngữ biên dịch, kiểu tĩnh, nhanh nhưng mang lại cảm giác như một ngôn ngữ thông dịch, kiểu động.
Bắt đầu
Cài đặt Go
Hướng dẫn tải xuống và cài đặt Go.
Hướng dẫn: Bắt đầu
Một hướng dẫn Hello, World ngắn gọn để bắt đầu. Tìm hiểu một chút về mã Go, công cụ, gói và module.
Hướng dẫn: Tạo một module
Một hướng dẫn gồm các chủ đề ngắn giới thiệu hàm, xử lý lỗi, mảng, map, kiểm thử đơn vị và biên dịch.
Hướng dẫn: Bắt đầu với workspace đa module
Giới thiệu các kiến thức cơ bản về việc tạo và sử dụng workspace đa module trong Go. Workspace đa module hữu ích để thực hiện thay đổi trên nhiều module.
Hướng dẫn: Phát triển API RESTful với Go và Gin
Giới thiệu các kiến thức cơ bản về cách viết API dịch vụ web RESTful với Go và Gin Web Framework.
Hướng dẫn: Bắt đầu với generics
Với generics, bạn có thể khai báo và sử dụng các hàm hoặc kiểu được viết để hoạt động với bất kỳ kiểu nào trong một tập hợp các kiểu do mã gọi cung cấp.
Hướng dẫn: Bắt đầu với fuzzing
Fuzzing có thể tạo các đầu vào cho các bài kiểm thử của bạn, giúp phát hiện các trường hợp biên và vấn đề bảo mật mà bạn có thể đã bỏ sót.
Viết ứng dụng Web
Xây dựng một ứng dụng web đơn giản.
Cách viết mã Go
Tài liệu này giải thích cách phát triển một tập hợp đơn giản các gói Go bên trong một module,
và cho biết cách sử dụng go lệnh
để xây dựng và kiểm thử các gói.
Chuyến tham quan Go
Giới thiệu tương tác về Go trong bốn phần. Phần đầu tiên trình bày cú pháp cơ bản và cấu trúc dữ liệu; phần thứ hai thảo luận về phương thức và interface; phần thứ ba nói về Generics; và phần thứ tư giới thiệu các nguyên thủy đồng thời của Go. Mỗi phần kết thúc bằng một vài bài tập để bạn có thể thực hành những gì bạn đã học. Bạn có thể tham quan trực tuyến hoặc cài đặt cục bộ bằng:
$ go install golang.org/x/website/tour@latest
Thao tác này sẽ đặt binary tour vào thư mục
bin của GOPATH.
Sử dụng và tìm hiểu Go
Effective Go
Tài liệu cung cấp các mẹo để viết mã Go rõ ràng, đúng phong cách. Đây là tài liệu bắt buộc phải đọc đối với mọi lập trình viên Go mới. Nó bổ sung cho chuyến tham quan và đặc tả ngôn ngữ, cả hai đều nên được đọc trước.
Câu hỏi thường gặp (FAQ)
Các câu trả lời cho những câu hỏi phổ biến về Go.
Plugin trình soạn thảo và IDE
Tài liệu tóm tắt các plugin trình soạn thảo và IDE thường được sử dụng có hỗ trợ Go.
Chẩn đoán
Tóm tắt các công cụ và phương pháp để chẩn đoán sự cố trong các chương trình Go.
Hướng dẫn về bộ gom rác của Go
Tài liệu mô tả cách Go quản lý bộ nhớ và cách tận dụng tối đa khả năng đó.
Quản lý dependency
Khi mã của bạn sử dụng các gói bên ngoài, những gói đó (được phân phối dưới dạng module) trở thành dependency.
Fuzzing
Trang tài liệu chính về fuzzing của Go.
Độ phủ cho ứng dụng Go
Trang tài liệu chính về kiểm thử độ phủ cho các ứng dụng Go.
Tối ưu hóa dựa trên hồ sơ thực thi
Trang tài liệu chính về tối ưu hóa dựa trên hồ sơ thực thi (PGO) cho các ứng dụng Go.
Hướng dẫn di chuyển encoding/json/v2
Hướng dẫn di chuyển an toàn từng bước từ encoding/json sang encoding/json/v2.
Tài liệu tham khảo
Tài liệu về gói
Tài liệu về thư viện chuẩn của Go.
Tài liệu về lệnh
Tài liệu về các công cụ Go.
Đặc tả ngôn ngữ
Đặc tả Ngôn ngữ Go chính thức.
Tham chiếu Go Modules
Sổ tay tham chiếu chi tiết về hệ thống quản lý dependency của Go.
tham chiếu tệp go.mod
Tham chiếu về các chỉ thị có trong tệp go.mod.
Mô hình bộ nhớ Go
Tài liệu quy định các điều kiện trong đó việc đọc một biến trong một goroutine có thể được đảm bảo quan sát các giá trị được tạo ra bởi việc ghi vào cùng một biến trong một goroutine khác.
Hướng dẫn đóng góp
Đóng góp cho Go.
Lịch sử bản phát hành
Tóm tắt các thay đổi giữa các bản phát hành Go.
Truy cập cơ sở dữ liệu
Hướng dẫn: Truy cập cơ sở dữ liệu quan hệ
Giới thiệu những kiến thức cơ bản về việc truy cập cơ sở dữ liệu quan hệ bằng Go
và gói database/sql trong thư viện chuẩn.
Truy cập cơ sở dữ liệu quan hệ
Tổng quan về các tính năng truy cập dữ liệu của Go.
Mở handle cơ sở dữ liệu
Bạn sử dụng handle cơ sở dữ liệu của Go để thực thi các thao tác cơ sở dữ liệu. Sau khi mở một handle với các thuộc tính kết nối cơ sở dữ liệu, handle đại diện cho một connection pool mà nó quản lý thay cho bạn.
Thực thi các câu lệnh SQL không trả về dữ liệu
Đối với các thao tác SQL có thể thay đổi cơ sở dữ liệu, bao gồm SQL
INSERT, UPDATE và DELETE, bạn sử dụng
các phương thức Exec.
Truy vấn dữ liệu
Đối với các câu lệnh SELECT trả về dữ liệu từ một truy vấn, sử dụng
phương thức Query hoặc QueryRow.
Sử dụng các câu lệnh đã chuẩn bị
Việc định nghĩa một câu lệnh đã chuẩn bị để sử dụng lặp lại có thể giúp mã của bạn chạy nhanh hơn một chút bằng cách tránh chi phí tạo lại câu lệnh mỗi lần mã của bạn thực hiện thao tác với cơ sở dữ liệu.
Thực thi các giao dịch
sql.Tx xuất các phương thức biểu diễn ngữ nghĩa dành riêng cho giao dịch,
bao gồm Commit và Rollback, cũng như các phương thức bạn
sử dụng để thực hiện các thao tác cơ sở dữ liệu thông thường.
Hủy các thao tác cơ sở dữ liệu đang thực hiện
Sử dụng context.Context, bạn có thể khiến các lời gọi hàm và dịch vụ của ứng dụng dừng hoạt động sớm và trả về lỗi khi việc xử lý của chúng không còn cần thiết.
Quản lý các kết nối
Đối với một số chương trình nâng cao, bạn có thể cần điều chỉnh các tham số của connection pool hoặc làm việc trực tiếp với các kết nối.
Tránh rủi ro SQL injection
Bạn có thể tránh rủi ro SQL injection bằng cách cung cấp các giá trị tham số SQL làm
đối số hàm của gói sql
Phát triển module
Phát triển và phát hành module
Bạn có thể tập hợp các gói liên quan vào module, sau đó phát hành các module để các nhà phát triển khác sử dụng. Chủ đề này cung cấp cái nhìn tổng quan về việc phát triển và phát hành module.
Quy trình phát hành và lập phiên bản module
Khi phát triển module để các nhà phát triển khác sử dụng, bạn có thể tuân theo một quy trình giúp đảm bảo trải nghiệm đáng tin cậy, nhất quán cho các nhà phát triển sử dụng module. Chủ đề này mô tả các bước cấp cao trong quy trình đó.
Quản lý mã nguồn module
Khi bạn đang phát triển module để phát hành cho người khác sử dụng, bạn có thể giúp đảm bảo các module của mình dễ sử dụng hơn đối với các nhà phát triển khác bằng cách tuân theo các quy ước về kho lưu trữ được mô tả trong chủ đề này.
Tổ chức một module Go
Cách phù hợp để tổ chức các tệp và thư mục trong một dự án Go điển hình là gì? Chủ đề này thảo luận về một số bố cục phổ biến tùy thuộc vào loại module mà bạn có.
Phát triển bản cập nhật phiên bản chính
Một bản cập nhật phiên bản chính có thể gây ảnh hưởng lớn đến người dùng module của bạn vì nó bao gồm các thay đổi gây lỗi tương thích và đại diện cho một module mới. Tìm hiểu thêm trong chủ đề này.
Phát hành một module
Khi bạn muốn cung cấp một module cho các nhà phát triển khác, bạn phát hành module đó để nó hiển thị với các công cụ Go. Sau khi bạn đã phát hành module, các nhà phát triển nhập các gói của module sẽ có thể giải quyết dependency trên module bằng cách chạy các lệnh như go get.
Đánh số phiên bản module
Nhà phát triển của một module sử dụng từng phần trong số phiên bản của module để báo hiệu mức độ ổn định của phiên bản và khả năng tương thích ngược. Với mỗi bản phát hành mới, số phiên bản bản phát hành của một module cụ thể phản ánh bản chất của các thay đổi trong module kể từ bản phát hành trước đó.
Các bài nói chuyện
Chuyến tham quan Go bằng video
Ba điều giúp Go nhanh, thú vị và hiệu quả: interface, reflection và concurrency. Xây dựng một trình thu thập web đơn giản để minh họa các điều này.
Mã phát triển một cách linh hoạt
Một trong những mục tiêu thiết kế quan trọng của Go là khả năng thích ứng của mã; nghĩa là có thể dễ dàng lấy một thiết kế đơn giản và xây dựng thêm trên đó theo cách sạch sẽ và tự nhiên. Trong bài nói chuyện này, Andrew Gerrand mô tả một máy chủ "chat roulette" đơn giản ghép các cặp kết nối TCP đến, sau đó sử dụng các cơ chế concurrency, interface và thư viện chuẩn của Go để mở rộng nó với interface web cùng các tính năng khác. Mặc dù chức năng của chương trình thay đổi đáng kể, tính linh hoạt của Go vẫn duy trì thiết kế ban đầu khi chương trình phát triển.
Các mẫu concurrency trong Go
Concurrency là chìa khóa để thiết kế các dịch vụ mạng hiệu năng cao. Các nguyên thủy concurrency của Go (goroutine và channel) cung cấp một phương tiện đơn giản và hiệu quả để biểu đạt việc thực thi đồng thời. Trong bài nói chuyện này, chúng ta xem cách các vấn đề concurrency phức tạp có thể được giải quyết một cách linh hoạt bằng mã Go đơn giản.
Các mẫu concurrency nâng cao trong Go
Bài nói chuyện này mở rộng từ bài nói chuyện Các mẫu concurrency trong Go để đi sâu hơn vào các nguyên thủy concurrency của Go.
Thêm
Xem trang Go Talks và trang wiki để biết thêm các bài nói chuyện về Go.
Codewalks
Các chuyến tham quan có hướng dẫn về chương trình Go.
Ngôn ngữ
- JSON-RPC: câu chuyện về interface
- Cú pháp khai báo của Go
- Defer, Panic và Recover
- Các mẫu đồng thời trong Go: hết thời gian chờ, tiếp tục xử lý
- Slice trong Go: cách sử dụng và nội bộ
- Bộ giải mã GIF: một bài tập về interface trong Go
- Xử lý lỗi và Go
Gói
- Làm việc với JSON - sử dụng gói json.
- Lượng lớn dữ liệu gob - thiết kế và sử dụng gói gob.
- Các quy luật của Reflection - những nền tảng của gói reflect.
- Gói image của Go - những nền tảng của gói image.
- Gói image/draw của Go - những nền tảng của gói image/draw.
Modules
- Sử dụng Go Modules - phần giới thiệu về việc sử dụng module trong một dự án đơn giản.
- Chuyển sang Go Modules - chuyển đổi một dự án hiện có để sử dụng module.
- Xuất bản Go Modules - cách cung cấp các phiên bản mới của module cho người khác.
- Go Modules: v2 và các phiên bản sau - tạo và xuất bản các phiên bản chính 2 trở lên.
- Duy trì tính tương thích cho Module của bạn - cách giữ cho module của bạn tương thích với các phiên bản minor/patch trước đó.
Công cụ
- Giới thiệu về lệnh Go - lý do chúng tôi viết nó, nó là gì, không phải là gì và cách sử dụng nó.
- Go Doc Comments - viết tài liệu chương trình tốt
- Gỡ lỗi mã Go bằng GDB
- Trình phát hiện Data Race - hướng dẫn sử dụng trình phát hiện data race.
- Hướng dẫn nhanh về Assembler của Go - phần giới thiệu về assembler được Go sử dụng.
- C? Go? Cgo! - liên kết với mã C bằng cgo.
- Lập hồ sơ các chương trình Go - các công cụ để đo mức sử dụng CPU và bộ nhớ của mã.
- Giới thiệu Trình phát hiện Race của Go - phần giới thiệu về trình phát hiện race.
- Gopls: máy chủ ngôn ngữ cho Go - tận dụng tối đa trình soạn thảo của bạn khi làm việc với Go.
Wiki
Go Wiki, được cộng đồng Go duy trì, bao gồm các bài viết về ngôn ngữ Go, công cụ và các tài nguyên khác.