Dựng khung main()
🧠 Suy nghĩ
"Bây giờ mình cần một 'sân khấu' để đặt các server vào và chạy. Chưa cần logic vội, chỉ dựng khung."
📐 Logic
- Tạo danh sách 3 server (dùng slice
[]*Server) - Tạo một hệ thống cảnh báo (
TelegramBot) - Chưa gọi kiểm tra — để
// TODO
💻 Code
func main() {
fmt.Println("=== KHỞI ĐỘNG HỆ THỐNG GIÁM SÁT ===")
// Danh sách server (slice của con trỏ, vì muốn sửa được IsUp)
servers := []*Server{
{Name: "Web-Server-01", IP: "192.168.1.10"},
{Name: "Web-Server-02", IP: "192.168.1.11"},
{Name: "DB-Server", IP: "10.0.0.5"},
}
// Hệ thống cảnh báo
alertSystem := TelegramBot{ChannelID: "#sysadmin-alerts"}
// TODO: kiểm tra từng server ở đây
_ = servers
_ = alertSystem
}
🔍 Giải thích
[]*Server→ slice của con trỏ Server. Vì sao con trỏ? Để khi methodSetStatussửaIsUp, server trong slice cũng đổi theo._ = servers→ chỉ để Go không báo lỗi "biến chưa dùng". Sẽ xoá ở chương sau.
✅ Chạy thử được rồi (go run main.go), tuy chỉ in ra 1 dòng. Nguyên tắc là: code
phải chạy được ở mọi bước, không dồn hết rồi mới chạy thử 1 lần.