Tutorial: Create a Go module
Đây là phần đầu tiên của một bài hướng dẫn giới thiệu một số tính năng cơ bản
của ngôn ngữ Go. Nếu bạn mới bắt đầu với Go, hãy nhớ xem
Hướng dẫn: Bắt đầu với Go, bài này giới thiệu
lệnh go, Go modules và mã Go rất đơn giản.
Trong bài hướng dẫn này, bạn sẽ tạo hai module. Module đầu tiên là một thư viện được thiết kế để các thư viện hoặc ứng dụng khác import. Module thứ hai là một ứng dụng gọi sẽ sử dụng module đầu tiên.
Chuỗi bài hướng dẫn này gồm bảy chủ đề ngắn, mỗi chủ đề minh họa 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ừ mộ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ý một lỗi -- Thêm xử lý lỗi đơn giản.
- Trả về một lời chào ngẫu nhiên -- Xử lý dữ liệu trong slice (mảng có kích thước thay đổi động của Go).
- Trả về lời chào cho nhiều người -- Lưu các cặp khóa/giá trị trong một map.
- Thêm một bài kiểm thử -- Sử dụng các tính năng kiểm thử đơn vị 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 cục bộ.
Điều kiện tiên quyết
- Một số kinh nghiệm lập trình. Mã ở đây khá đơn giản, nhưng sẽ hữu ích nếu bạn biết một chút về hàm, vòng lặp và mảng.
- Go. Chúng tôi khuyên bạn sử dụng phiên bản Go mới nhất để làm theo bài hướng dẫn này. Để biết hướng dẫn cài đặt, xem Cài đặt Go.
- Một công cụ để chỉnh sửa mã của bạn. Bất kỳ trình soạn thảo văn bản nào bạn có cũng sẽ hoạt động tốt. Hầu hết trình soạn thảo văn bản đều hỗ trợ tốt cho Go. Các trình soạn thảo 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 hoạt động tốt khi sử dụng bất kỳ terminal nào trên Linux và Mac, cũng như PowerShell hoặc cmd trên Windows.
Bắt đầu một module mà người khác có thể sử dụng
Bắt đầu bằng cách 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 để cung cấp một tập hợp chức năng hữu ích và riêng biệt. Ví dụ, bạn có thể tạo một module với các package có các hàm để thực hiện phân tích tài chính để những người khác viết ứng dụng tài chính có thể sử dụng công việc của bạn. Để biết thêm về việc phát triển module, xem Phát triển và xuất bản module.
Mã Go được nhóm thành các package, và các package được nhóm thành các module. Module của bạn chỉ định các dependency cần thiết để chạy mã của bạn, bao gồm phiên bản Go và tập hợp các module khác mà nó yêu cầu.
Khi bạn thêm hoặc cải thiện chức năng trong module của mình, bạn xuất bản các phiên bản mới của module. Các nhà phát triển viết mã gọi các hàm trong module của bạn có thể import các package đã cập nhật của module và kiểm thử với phiên bản mới trước khi đưa nó vào sử dụng trong môi trường production.
-
Mở dấu nhắc lệnh và
cdđến thư mục home của bạn.Trên Linux hoặc Mac:
cd
Trê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 của bạn, sử dụng các lệnh sau:
mkdir greetings cd greetings
-
Bắt đầu module của bạn bằng cách sử dụng
go mod initcommand.Chạy lệnh
go mod init, cung cấp đường dẫn module của bạn -- ở đây, sử dụngexample.com/greetings. Nếu bạn xuất bản một module, đường dẫn này phải là đường dẫn mà Go tools có thể tải module của bạn xuống. Đó sẽ là kho lưu trữ của mã của bạn.Để biết thêm về việc đặt tên module bằng đường dẫn module, xem Quản lý dependency.
$ go mod init example.com/greetings go: creating new go.mod: module example.com/greetings
Lệnh
go mod inittạo một tệp go.mod để theo dõi các dependency của mã của bạn. Cho đến thời điểm này, tệp chỉ bao gồm tên module của bạn và phiên bản Go mà mã của bạn hỗ trợ. Nhưng khi bạn thêm dependency, 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ữ cho các bản build có thể tái tạo và cho phép bạn kiểm soát trực tiếp các phiên bản module sẽ sử dụng. - Trong trình soạn thảo văn bản của bạn, tạo một tệp để viết mã và đặt tên là greetings.go.
-
Dán mã sau vào tệp greetings.go và lưu tệp.
package greetings import "fmt" // Hello trả về lời chào cho người có tên được chỉ định. func Hello(name string) string { // Trả về lời chào chứa tên trong một thông điệp. message := fmt.Sprintf("Hi, %v. Welcome!", name) return message }Đây là mã đầu tiên cho module của bạn. Nó trả về lời chào cho bất kỳ trình gọi nào yêu cầu. Bạn sẽ viết mã gọi hàm này trong bước tiếp theo.
Trong mã này, bạn:
-
Khai báo một package
greetingsđể tập hợp các hàm liên quan. -
Triển khai một hàm
Hellođể trả về lời chào.Hàm này nhận một tham số
namecó kiểu làstring. Hàm cũng trả về mộtstring. Trong Go, một hàm có tên bắt đầu bằng chữ cái viết hoa có thể được gọi bởi một hàm không nằm trong cùng package. Điều này được gọi trong Go là tên được export. Để biết thêm về các tên được export, xem Tên được export trong Go tour.
-
Khai báo biến
messageđể chứa 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 trong một dòng (Go sử dụng giá trị ở bên phải để xác định kiểu của biến). Viết theo cách đầy đủ, bạn có thể đã viết như sau:var message string message = fmt.Sprintf("Hi, %v. Welcome!", name) -
Sử dụng hàm
Sprintfcủa packagefmtđể tạo một thông điệp chào. Đối số đầu tiên là một chuỗi định dạng, vàSprintfthay thế giá trị của tham sốnamecho động từ định dạng%v. Việc chèn giá trị của tham sốnamehoàn tất nội dung lời chào. - Trả về nội dung lời chào đã được định dạng cho trình gọi.
-
Khai báo một package
Trong bước tiếp theo, bạn sẽ gọi hàm này từ một module khác.