Tài liệu

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 nó giúp dễ dàng viết các chương trình tận dụng tối đa các máy đa nhân và máy nối mạng, trong khi hệ thống kiểu mới lạ của nó cho phép xây dựng chương trình linh hoạt và theo module. Go biên dịch nhanh chóng 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 reflection tại runtime. Đây là ngôn ngữ nhanh, kiểu tĩnh, được biên dịch nhưng cảm giác như ngôn ngữ kiểu động, được thông dịch.

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

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

Hướng dẫn 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 những điều cơ bản về 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 RESTful API với Go và Gin

Giới thiệu những điều cơ bản về viết API web service kiểu 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ỳ tập hợp kiểu nào được cung cấp bởi mã gọi.

Hướng dẫn: Bắt đầu với fuzzing

Fuzzing có thể tạo ra các đầu vào cho bài kiểm thử của bạn, có thể 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ỏ lỡ.

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à nó cho thấy cách sử dụng go command để xây dựng và kiểm thử các gói.

Tour Go

Giới thiệu tương tác về Go trong bốn phần. Phần đầu tiên bao gồm 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 về Generics; và phần thứ tư giới thiệu các primitive đồ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 thực hành những gì bạn đã học. Bạn có thể tham gia tour 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 tệp nhị phân tour vào thư mục bin của GOPATH của bạn.

Sử dụng và hiểu Go

Effective Go

Tài liệu cung cấp các gợi ý để viết mã Go rõ ràng, chuẩn mực. Bắt buộc đọc đối với bất kỳ lập trình viên Go mới nào. Nó bổ sung cho tour và đặc tả ngôn ngữ, cả hai đều nên đọc trước.

Câu hỏi thường gặp (FAQ)

Trả lời các câu hỏi thường gặp 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 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 vấn đề trong chương trình Go.

Hướng dẫn về Bộ gom rác Go

Tài liệu mô tả cách Go quản lý bộ nhớ và cách tận dụng tốt nhất.

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 trong Go.

Coverage cho ứng dụng Go

Trang tài liệu chính về kiểm thử coverage cho ứ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 ứng dụng Go.

Tham khảo

Tài liệu gói

Tài liệu cho thư viện chuẩn Go.

Tài liệu lệnh

Tài liệu cho các công cụ Go.

Đặc tả ngôn ngữ

Đặc tả chính thức của ngôn ngữ Go.

Tài liệu tham khảo Go Modules

Tài liệu tham khảo chi tiết cho hệ thống quản lý dependency của Go.

Tài liệu tham khảo tệp go.mod

Tài liệu tham khảo cho các chỉ thị có trong tệp go.mod.

Mô hình bộ nhớ Go

Tài liệu xác định các điều kiện mà các lần đọc một biến trong một goroutine có thể được đảm bảo quan sát các giá trị do các lần ghi vào cùng biến đó trong một goroutine khác tạo ra.

Hướng dẫn đóng góp

Đóng góp cho Go.

Lịch sử 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 điều cơ bản về truy cập cơ sở dữ liệu quan hệ sử dụ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ở database handle

Bạn sử dụng database handle của Go để thực thi các thao tác cơ sở dữ liệu. Sau khi mở 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 mặt bạn.

Thực thi 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ừ truy vấn, sử dụng phương thức Query hoặc QueryRow.

Sử dụng prepared statement

Định nghĩa một prepared statement để dùng 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 overhead của việc tạo lại câu lệnh mỗi lần mã của bạn thực hiện thao tác cơ sở dữ liệu.

Thực thi transaction

sql.Tx xuất ra các phương thức biểu diễn ngữ nghĩa dành riêng cho transaction, bao gồm CommitRollback, cũng như các phương thức bạn dùng để thực hiện các thao tác cơ sở dữ liệu phổ biến.

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 quá trình xử lý của chúng không còn cần thiết nữa.

Quản lý 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ố connection pool hoặc làm việc với các kết nối một cách tường minh.

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 dưới dạng đối số hàm của gói sql.

Phát triển module

Phát triển và xuất bản module

Bạn có thể tập hợp các gói liên quan vào module, sau đó xuất bản các module để các nhà phát triển khác sử dụng. Chủ đề này cung cấp tổng quan về việc phát triển và xuất bản module.

Quy trình phát hành và đánh phiên bản module

Khi bạn 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 để xuất bản cho người khác sử dụng, bạn có thể giúp đảm bảo rằng module của mình dễ dùng hơn cho các nhà phát triển khác bằng cách tuân theo các quy ước kho lưu trữ được mô tả trong chủ đề này.

Tổ chức một module Go

Cách đúng đắn để 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 bạn có.

Phát triển bản cập nhật phiên bản lớn

Cập nhật phiên bản lớn có thể rất gây gián đoạn cho người dùng module của bạn vì nó bao gồm các thay đổi phá vỡ tương thích và đại diện cho một module mới. Tìm hiểu thêm trong chủ đề này.

Xuất bản một module

Khi bạn muốn một module có sẵn cho các nhà phát triển khác, bạn xuất bản nó để nó hiển thị với các công cụ Go. Sau khi bạn xuất bản module, các nhà phát triển import các gói của nó sẽ có thể giải quyết dependency vào 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 mỗi phần của số phiên bản module để báo hiệu sự ổn định và khả năng tương thích ngược của phiên bản. Đối với mỗi bản phát hành mới, số phiên bản phát hành của module phản ánh cụ thể bản chất của các thay đổi trong module kể từ bản phát hành trước.

Talks

Video Tour về Go

Ba điều làm cho Go nhanh, thú vị và hiệu quả: interface, reflection và đồng thời. Xây dựng một web crawler đơn giản để minh họa những điều này.

Mã phát triển một cách duyên dáng

Một trong những mục tiêu thiết kế chính của Go là tính thích nghi của mã; tức là nên dễ dàng lấy một thiết kế đơn giản và xây dựng trên nó theo cách sạch sẽ và tự nhiên. Trong talk 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ế đồng thời, interface và thư viện chuẩn của Go để mở rộng nó với giao diện web và các tính năng khác. Trong khi chức năng của chương trình thay đổi đáng kể, tính linh hoạt của Go vẫn bảo tồn thiết kế ban đầu khi nó phát triển.

Các mẫu đồng thời Go

Đồng thời là chìa khóa để thiết kế các dịch vụ mạng hiệu suất cao. Các primitive đồng thời của Go (goroutine và channel) cung cấp phương tiện đơn giản và hiệu quả để biểu đạt thực thi đồng thời. Trong talk này, chúng ta thấy cách các vấn đề đồng thời phức tạp có thể được giải quyết một cách duyên dáng với mã Go đơn giản.

Các mẫu đồng thời Go nâng cao

Talk này mở rộng talk Các mẫu đồng thời Go để đi sâu hơn vào các primitive đồng thời của Go.

Thêm

Xem trang Go Talkstrang wiki để xem thêm các talk Go.

Codewalk

Các tour có hướng dẫn qua các chương trình Go.

Ngôn ngữ

Gói

Module

Công cụ

Wiki

Go Wiki, được duy trì bởi cộng đồng Go, 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 Learn trên Wiki để có thêm tài nguyên học Go.

Tài liệu không phải tiếng Anh

Xem trang NonEnglish trên Wiki để có tài liệu đã được bản địa hóa.