Viết chương trình Hello World bằng Go

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.

Thiết lập môi trường phát triển

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.

Chương trình Hello World

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 mainmain.go, nhưng các tên khác cũng hoạt động.

Chạy chương trình Hello World

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.

Lệnh go install

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ề packagemodule Go.

Lệnh go build

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:)

Lệnh go run

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 rungo 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 :)

Go Playground

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/ .

Giải thích chương trình Hello World

Đâ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 {} 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.

Biến trong Go
Trong hướng dẫn này, chúng ta sẽ tìm hiểu về biến là gì, các cách khai báo biến và các lỗi thương gặp liên quan tới 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.

Nếu Comdy hữu ích và giúp bạn tiết kiệm thời gian làm việc

Bạn có thể vui lòng đưa Comdy vào whitelist của trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi trong việc trả tiền cho dịch vụ lưu trữ web để duy trì hoạt động của trang web.

Go
Bài Viết Liên Quan:
Phương thức (method) trong Go
Trung Nguyen 02/12/2021
Phương thức (method) trong Go

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.

Struct trong Go
Trung Nguyen 28/11/2021
Struct 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, ...

Con trỏ trong Go
Trung Nguyen 28/11/2021
Con trỏ trong Go

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 trong Go
Trung Nguyen 28/11/2021
Chuỗi trong Go

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.