👋 Bài 2: Chương Trình Hello World Đầu Tiên
🎯 Sau bài học này, bạn sẽ:
- Viết được chương trình Go đầu tiên
- Hiểu cấu trúc cơ bản của một file Go
- Biết package là gì và tại sao cần import
- Chạy chương trình với
go run - Build file thực thi với
go build
1. Tạo Project Đầu Tiên
Hãy bắt đầu bằng việc tạo thư mục cho dự án và khởi tạo Go module:
# Tạo thư mục cho project
mkdir hello-go
cd hello-go
# Khởi tạo Go module (quan trọng!)
go mod init hello-go
# Tạo file main.go
touch main.go # Linux/Mac
# hoặc: type nul > main.go # Windows
Go Module là hệ thống quản lý dependencies (thư viện) của Go từ version 1.11. Lệnh
go mod init tạo file go.mod để quản lý project.
2. Viết Chương Trình Hello World
Mở file main.go và viết code sau:
package main
import "fmt"
func main() {
fmt.Println("Xin chào, Gopher! 🐹")
fmt.Println("Chào mừng bạn đến với Go!")
}
Chạy chương trình
go run main.go
Kết quả:
Xin chào, Gopher! 🐹
Chào mừng bạn đến với Go!
3. Giải Thích Chi Tiết Từng Dòng
Hãy phân tích kỹ từng phần của chương trình:
package main
Khai báo package. main là package đặc biệt cho chương
trình chạy được.
import "fmt"
Import package fmt (format) để in ra màn hình.
func main() { }
Hàm main - điểm bắt đầu của chương trình.
fmt.Println(...)
Gọi hàm Println từ package fmt để in text ra màn hình.
📦 Package là gì?
Package là cách Go tổ chức code. Mọi file Go đều phải thuộc về một package.
package main: Package đặc biệt, báo cho Go biết đây là chương trình chạy được- Các package khác (như
fmt,math): Là thư viện cung cấp các chức năng sẵn có
📥 Import là gì?
import dùng để "nhập" các package khác vào chương trình.
Ở đây ta import fmt (format) - package chuẩn của Go để xử lý input/output.
// Cách 1: Import từng dòng
import "fmt"
import "math"
// Cách 2: Import gom nhóm (khuyên dùng)
import (
"fmt"
"math"
)
🏁 Hàm main() là gì?
func main() là hàm điểm vào (entry point) của chương trình.
Khi bạn chạy chương trình, Go sẽ tìm và thực thi hàm main() đầu tiên.
• File chứa hàm
main() phải có package main• Mỗi chương trình chỉ có một hàm
main()• Không có hàm main = không chạy được (là library/package)
4. go run vs go build
go run - Chạy nhanh
go run biên dịch và chạy chương trình trong một bước.
File thực thi được tạo tạm thời và xóa sau khi chạy xong.
# Chạy một file
go run main.go
# Chạy nhiều files
go run main.go helper.go
# Chạy tất cả files trong thư mục
go run .
go build - Biên dịch ra file thực thi
go build tạo file thực thi (.exe trên Windows) mà bạn có thể chạy trực tiếp
mà không cần Go đã cài đặt.
# Build - tạo file thực thi
go build -o myapp main.go
# Chạy file vừa build
./myapp # Linux/Mac
myapp.exe # Windows
| Lệnh | Khi nào dùng |
|---|---|
go run |
Lúc đang phát triển, test nhanh |
go build |
Khi cần file để deploy/chia sẻ |
5. Bình Luận (Comments) Trong Code
Comments là phần text mà Go sẽ bỏ qua khi chạy. Dùng để giải thích code cho người đọc (và cho chính bạn trong tương lai!).
package main
import "fmt"
// Đây là comment 1 dòng
/*
Đây là comment
nhiều dòng
*/
func main() {
// In ra lời chào
fmt.Println("Hello, World!") // Comment cuối dòng
}
• Giải thích TẠI SAO làm việc đó, không chỉ việc gì đang làm
• Viết comment bằng tiếng Việt cũng được!
• Code tốt thường không cần quá nhiều comment
6. Các Hàm fmt Thường Dùng
package main
import "fmt"
func main() {
name := "Gopher"
age := 10
// Println - in và xuống dòng
fmt.Println("Hello, World!")
// Print - in nhưng không xuống dòng
fmt.Print("Hello ")
fmt.Print("World!\n") // \n để xuống dòng thủ công
// Printf - in có format (quan trọng!)
fmt.Printf("Tên: %s, Tuổi: %d\n", name, age)
// Sprintf - trả về string (không in ra)
message := fmt.Sprintf("Xin chào %s!", name)
fmt.Println(message)
}
•
%s - string (chuỗi)•
%d - integer (số nguyên)•
%f - float (số thực)•
%v - value (tự đoán kiểu)•
%T - type (in ra kiểu dữ liệu)•
\n - xuống dòng
📝 Bài Tập Thực Hành
Hãy tự viết chương trình:
- Tạo project mới tên
my-info - In ra tên của bạn
- In ra tuổi của bạn
- Dùng
Printfđể in câu: "Tôi là [tên], [tuổi] tuổi"
👀 Xem đáp án
package main
import "fmt"
func main() {
name := "Minh"
age := 25
fmt.Println("Tên:", name)
fmt.Println("Tuổi:", age)
fmt.Printf("Tôi là %s, %d tuổi\n", name, age)
}
📝 Tóm Tắt Bài Học
- Mọi chương trình Go cần
package mainvàfunc main() importđể sử dụng các package có sẵnfmt.Println()để in ra màn hìnhgo runđể chạy nhanh,go buildđể tạo file thực thi- Comments giúp giải thích code:
// dòng đơnhoặc/* nhiều dòng */