Đây là phần đầu tiên của loạt hướng dẫn giới thiệu một vài tính năng nền tảng của ngôn ngữ Go. Nếu bạn mới bắt đầu với Go, hãy chắc chắn đã xem qua Hướng dẫn: Bắt đầu với Go, bài đó giới thiệu lệnh go, Go module, và những đoạn mã Go rất đơn giản.
Trong bài hướng dẫn này, bạn sẽ tạo hai module. Module thứ nhất là một thư viện, được dùng để các thư viện hoặc ứng dụng khác import vào. Module thứ hai là một ứng dụng gọi, sẽ sử dụng module thứ nhất.
Chuỗi bài này gồm bảy chủ đề ngắn, mỗi chủ đề minh hoạ một phần khác nhau của ngôn ngữ.
- Tạo một module – Viết một module nhỏ với các hàm mà bạn có thể gọi từ module khác.
- Gọi mã của bạn từ một module khác – Import và sử dụng module mới của bạn.
- Trả về và xử lý lỗi – Thêm phần xử lý lỗi đơn giản.
- Trả về lời chào ngẫu nhiên – Xử lý dữ liệu trong slice (mảng có kích thước động của Go).
- Trả về lời chào cho nhiều người – Lưu các cặp khoá/giá trị trong map.
- Thêm một test – Dùng các tính năng unit testing có sẵn của Go để kiểm thử mã của bạn.
- Biên dịch và cài đặt ứng dụng – Biên dịch và cài đặt mã của bạn trên máy cục bộ.
Lưu ý: Xem các bài hướng dẫn khác tại Hướng dẫn.
Yêu cầu trước khi bắt đầu
- Một chút kinh nghiệm lập trình. Mã ở đây khá đơn giản, nhưng sẽ dễ hơn nếu bạn đã biết đôi chút về hàm, vòng lặp và mảng.
- Go. Chúng tôi khuyến nghị dùng phiên bản Go mới nhất để theo bài hướng dẫn này. Xem hướng dẫn cài đặt tại Cài đặt Go.
- Một công cụ để soạn mã. Bất kỳ trình soạn thảo văn bản nào bạn có đều dùng được. Hầu hết trình soạn thảo đều hỗ trợ Go tốt. Phổ biến nhất là VSCode (miễn phí), GoLand (trả phí) và Vim (miễn phí).
- Một cửa sổ dòng lệnh. Go chạy tốt với mọi terminal trên Linux và Mac, và với PowerShell hoặc cmd trên Windows.
Khởi tạo một module để người khác dùng được
Hãy bắt đầu bằng việc tạo một Go module. Trong một module, bạn tập hợp một hoặc nhiều package liên quan thành một bộ hàm riêng biệt và hữu ích. Ví dụ, bạn có thể tạo một module chứa các package có hàm phục vụ phân tích tài chính, để những người viết ứng dụng tài chính khác dùng được thành quả của bạn. Tìm hiểu thêm về phát triển module tại Phát triển và publish module.
Mã Go được nhóm thành package, và package được nhóm thành module. Module của bạn chỉ định những phụ thuộc cần thiết để chạy mã, bao gồm cả phiên bản Go và tập hợp các module khác mà nó yêu cầu.
Khi bạn bổ sung hoặc cải tiến chức năng trong module, bạn publish các phiên bản mới của module. Những lập trình viên viết mã gọi hàm trong module của bạn có thể import các package đã cập nhật và kiểm thử với phiên bản mới trước khi đưa vào chạy thật.
-
Mở cửa sổ dòng lệnh và
cdvề thư mục home của bạn.Trên Linux hoặc Mac:
cdTrên Windows:
cd %HOMEPATH% -
Tạo thư mục
greetingscho mã nguồn Go module của bạn.Ví dụ, từ thư mục home, dùng các lệnh sau:
mkdir greetings cd greetings -
Khởi tạo module bằng lệnh
go mod init.Chạy lệnh
go mod initkèm theo module path của bạn – ở đây, hãy dùngexample.com/greetings. Nếu bạn publish một module, đây bắt buộc phải là một đường dẫn mà từ đó các công cụ Go tải được module của bạn về. Đó chính là repository chứa mã của bạn.Tìm hiểu thêm về cách đặt tên module bằng module path tại Quản lý phụ thuộc.
$ go mod init example.com/greetings go: creating new go.mod: module example.com/greetingsLệnh
go mod inittạo ra tệp go.mod để theo dõi các phụ thuộc của mã. Đến lúc này, tệp mới chỉ chứa tên module và phiên bản Go mà mã của bạn hỗ trợ. Nhưng khi bạn thêm phụ thuộc, tệp go.mod sẽ liệt kê các phiên bản mà mã của bạn phụ thuộc vào. Điều này giúp việc build có thể tái lập được và cho bạn quyền kiểm soát trực tiếp phiên bản module nào được sử dụng. -
Trong trình soạn thảo, hãy tạo một tệp để viết mã và đặt tên là greetings.go.
-
Dán đoạn mã sau vào tệp greetings.go rồi lưu lại.
package greetings import "fmt" // Hello returns a greeting for the named person. func Hello(name string) string { // Return a greeting that embeds the name in a message. message := fmt.Sprintf("Hi, %v. Welcome!", name) return message }Đây là đoạn mã đầu tiên cho module của bạn. Nó trả về một lời chào cho bất kỳ phía gọi nào yêu cầu. Bạn sẽ viết mã gọi hàm này ở bước tiếp theo.
Trong đoạn mã này, bạn:
-
Khai báo package
greetingsđể gom các hàm liên quan lại với nhau. -
Hiện thực hàm
Hellođể trả về lời chào.Hàm này nhận tham số
namecó kiểustring. Hàm cũng trả về mộtstring. Trong Go, một hàm có tên bắt đầu bằng chữ in hoa có thể được gọi bởi hàm không nằm cùng package. Trong Go, đây gọi là tên được export (exported name). Tìm hiểu thêm về tên được export tại Exported names trong Go tour.
-
Khai báo biến
messageđể giữ lời chào của bạn.Trong Go, toán tử
:=là cách viết tắt để khai báo và khởi tạo một biến chỉ trong một dòng (Go dùng giá trị ở vế phải để xác định kiểu của biến). Nếu viết theo cách dài dòng, bạn sẽ viết thành:var message string message = fmt.Sprintf("Hi, %v. Welcome!", name) -
Dùng hàm
Sprintfcủa packagefmtđể tạo thông điệp chào. Đối số đầu tiên là một chuỗi định dạng, vàSprintfsẽ thay giá trị của tham sốnamevào động từ định dạng%v. Việc chèn giá trị của tham sốnamehoàn thiện nội dung lời chào. -
Trả về nội dung lời chào đã định dạng cho phía gọi.
-
Ở bước tiếp theo, bạn sẽ gọi hàm này từ một module khác.