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, UPDATEDELETE, 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 CommitRollback, 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 Talkstrang 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ữ

Gói

Modules

Công cụ

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.

Xem trang Học trên Wiki để có thêm các tài nguyên học Go.

Tài liệu không bằng tiếng Anh

Xem trang Không bằng tiếng Anh trên Wiki để xem tài liệu được bản địa hóa.