KHOÁ HỌC Phần 1 — Nền tảng Dựng khung main()

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

  • []*Serverslice của con trỏ Server. Vì sao con trỏ? Để khi method SetStatus sửa IsUp, 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.

← interface Notifier — hợp đồng thay được