Hướng dẫn này dành cho Go phiên bản từ 1.13 trở lên.
Không có cách nào tốt hơn để học một ngôn ngữ lập trình hơn là bắt tay vào viết code. Hãy bắt tay vào viết chương trình Go đầu tiên của chúng ta.
Hãy tạo một thư mục mà chúng ta muốn viết chương trình hello world. Mở thiết bị đầu cuối (terminal) và chạy lệnh sau.
mkdir ~/Documents/learngo/
Lệnh trên sẽ tạo một thư mục có tên learngo
bên trong thư mục Documents của người dùng hiện tại. Hãy thoải mái tạo thư mục ở bất cứ nơi nào bạn muốn chứa mã nguồn.
Tạo một tập tin có tên main.go
trong thư mục learngo
bằng trình soạn thảo văn bản yêu thích của bạn với các nội dung sau.
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
Đó là một quy ước trong Go để đặt tên tập tin có chứa function main
là main.go
, nhưng các tên khác cũng hoạt động.
Có một số cách khác nhau để chạy chương trình Go. Hãy xem xét từng cái một.
Phương pháp đầu tiên để chạy chương trình Go là sử dụng lệnh go install
. Hãy cd
vào thư mục learngo
mà chúng ta vừa tạo.
cd ~/Documents/learngo/
Tiếp theo chạy lệnh sau.
go install
Lệnh trên sẽ biên dịch chương trình và cài đặt (sao chép) tệp nhị phân vào thư mục ~/go/bin
. Tên của tập tin nhị phân sẽ là thư mục chứa main.go
. Trong trường hợp của chúng ta, nó sẽ được đặt tên learngo
.
Bạn có thể gặp phải lỗi sau khi cố gắng cài đặt chương trình.
go install: no install location for directory /home/naveen/Documents/learngo outside GOPATH
For more details see: 'go help gopath'
Lỗi ở trên thực sự có nghĩa là lệnh go install
không thể tìm thấy vị trí để cài đặt tập tin nhị phân đã biên dịch. Vì vậy, chúng ta hãy tiếp tục và cung cấp cho nó một vị trí. Vị trí này được điều chỉnh bởi biến môi trường GOBIN
.
export GOBIN=~/go/bin/
Lệnh trên chỉ định rằng go install
sẽ sao chép tập tin nhị phân đã biên dịch vào đường dẫn ~/go/bin/
. Đây là vị trí thông thường cho hệ thống Go nhưng hãy thay đổi nó thành bất kỳ vị trí nào bạn muốn. Bây giờ hãy thử chạy lại lệnh go install
và chương trình sẽ biên dịch và chạy mà không gặp bất kỳ sự cố nào.
Bạn có thể nhập lệnh ls -al ~/go/bin/learngo
vào thiết bị đầu cuối và bạn có thể thấy rằng go install
đã đặt tập tin nhị phân trong đường dẫn ~/go/bin
Bây giờ chúng ta hãy chạy tập tin nhị phân đã biên dịch.
~/go/bin/learngo
Lệnh trên sẽ chạy tập tin nhị phân learngo
và in ra kết quả sau.
Hello World
Chúc mừng! Bạn đã chạy thành công chương trình Go đầu tiên của mình.
Nếu bạn muốn tránh nhập toàn bộ đường dẫn ~/go/bin/learngo
mỗi khi chạy chương trình, bạn có thể thêm ~/go/bin/
vào PATH của mình.
export PATH=$PATH:~/go/bin
Bây giờ bạn chỉ cần gõ learngo
vào terminal để chạy chương trình.
Bạn có thể tự hỏi điều gì sẽ xảy ra khi thư mục learngo
chứa nhiều tập tin Go khác nhau thay vì chỉ có tập tin main.go
. Làm thế nào để lệnh go install
hoạt động trong trường hợp này? Vui lòng chờ, chúng ta sẽ thảo luận về những điều này khi chúng ta tìm hiểu về package và module Go.
Tùy chọn thứ hai để chạy chương trình đang sử dụng lệnh go build
. Lệnh go build
tương tự như lệnh go install
ngoại trừ việc nó không cài đặt (sao chép) tập tin nhị phân đã biên dịch vào đường dẫn ~/go/bin/
, thay vào đó nó tạo tập tin nhị phân bên trong vị trí mà từ đó go build
đã được cài đặt.
Nhập lệnh sau vào thiết bị đầu cuối để thay đổi thư mục hiện tại thành learngo
.
cd ~/Documents/learngo/
Sau đó, nhập lệnh sau.
go build
Lệnh trên sẽ tạo một tập tin nhị phân có tên learngo
trong thư mục hiện tại. Lệnh ls -al
sẽ tiết lộ rằng một tệp có tên learngo
được tạo.
Nhập lệnh ./learngo
để chạy chương trình. Điều này cũng sẽ in ra kết quả sau:
Hello World
Chúng ta cũng đã chạy thành công chương trình Go đầu tiên của mình bằng lệnh go build
:)
Cách thứ ba để chạy chương trình là sử dụng lệnh go run
.
Gõ lệnh cd ~/Documents/learngo/
vào terminal để thay đổi thư mục hiện tại thành learngo
.
Sau đó, nhập lệnh sau.
go run main.go
Sau khi nhập lệnh trên, chúng ta có thể thấy kết quả đầu ra như sau:
Hello World
Một khác biệt nhỏ giữa lệnh go run
và go build/go install
là lệnh go run
yêu cầu tên của tập tin .go
làm đối số.
Lệnh go run
hoạt động tương tự như go build
. Thay vì biên dịch và cài đặt chương trình vào thư mục hiện tại, nó sẽ biên dịch tập tin vào một vị trí tạm thời và chạy tập tin từ vị trí đó. Nếu bạn muốn biết vị trí nơi go run
biên dịch tập tin, vui lòng chạy lệnh go run
với đối số --work
.
go run --work main.go
Chạy lệnh trên trong trường hợp của tôi kết quả đầu ra
WORK=/var/folders/23/vdjz4kt972g5nzr86wzrj9740000gq/T/go-build698353814
Hello World
Giá trị của WORK
chỉ định cụ thể vị trí tạm thời mà chương trình sẽ được biên dịch.
Trong trường hợp của tôi, chương trình đã được biên dịch đến vị trí /var/folders/23/vdjz4kt972g5nzr86wzrj9740000gq/T/go-build698353814/b001/exe
. Điều này có thể khác nhau trong trường hợp của bạn :)
Cách cuối cùng để chạy chương trình là sử dụng Go Playground. Mặc dù điều này có những hạn chế, nhưng phương pháp này rất hữu ích khi chúng ta muốn chạy các chương trình đơn giản vì nó sử dụng trình duyệt và không cần cài đặt Go trong máy cục bộ của bạn :).
Tôi đã tạo ra một Playground cho chương trình hello world. Bấm vào đây để chạy chương trình trực tuyến.
Bạn cũng có thể sử dụng Go Playground để chia sẻ mã nguồn của mình với những người khác.
Bây giờ chúng ta đã biết 4 cách khác nhau để chạy một chương trình Go, bạn có thể bối rối khi quyết định sử dụng phương pháp nào. Câu trả lơi còn phụ thuộc vào nhiêu thứ.
Tôi thường sử dụng Playground khi tôi muốn kiểm tra nhanh logic hoặc tìm hiểu cách hoạt động của một chức năng thư viện tiêu chuẩn. Trong hầu hết các trường hợp khác, tôi thích go install
vì nó cung cấp cho tôi một tùy chọn để chạy chương trình từ bất kỳ thư mục nào trong thiết bị đầu cuối vì nó biên dịch tất cả các chương trình theo đường dẫn chuẩn ~/go/bin/
.
Đây là chương trình Hello World chúng ta vừa viết:
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
Chúng ta sẽ thảo luận ngắn gọn về những gì mỗi dòng của chương trình làm. Chúng ta sẽ đi sâu vào từng phần của chương trình trong các bài hướng dẫn sắp tới.
package main
- Mọi tập tin Go phải bắt đầu bằng câu lệnh package name
. Các package được sử dụng để cung cấp khả năng phân chia mã và khả năng tái sử dụng. Tên package main
được sử dụng ở đây. Function main
phải luôn nằm trong package main
.
import "fmt"
- Câu lệnh import được sử dụng để import các package khác. Trong trường hợp của chúng ta, package fmt
được import và nó sẽ được sử dụng bên trong function main
để in văn bản ra đầu ra tiêu chuẩn.
func main()
- Từ khóa func
đánh dấu sự bắt đầu của một function. Function main
là một function đặc biệt. Việc thực thi chương trình bắt đầu từ function main
. Dấu ngoặc nhọn {
và }
cho biết bắt đầu và kết thúc của function main
.
fmt.Println("Hello World")
- Function Println
của package fmt
được sử dụng để in văn bản ra đầu ra tiêu chuẩn. package.function()
là cú pháp để gọi một function trong một package.
Trong hướng dẫn tiếp theo, bạn sẽ tìm hiểu về biến trong Go.
Vui lòng gửi phản hồi và thắc mắc của bạn trong phần bình luận. Cảm ơn bạn.
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong hướng dẫn này, chúng ta sẽ tìm hiểu phương thức (method) trong Go là gì? Cú pháp khai báo phương thức, so sánh phương thức với hàm, ... trong Go.
Trong hướng dẫn này, chúng ta sẽ tìm hiểu struct là gì, cách khai báo và sử dụng một struct trong Go, struct ẩn danh, so sanh hai struct, ...
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách con trỏ (pointer) hoạt động trong Go và nó khác với con trỏ trong các ngôn ngữ khác như C và C++ như thế nào.
Chuỗi (string) xứng đáng được đề cập đặc biệt trong Go vì chúng khác biệt trong cách triển khai khi so sánh với các ngôn ngữ khác.