KHOÁ HỌC Phần 1 — Nền tảng struct Server — dữ liệu trước, logic sau

struct Server — dữ liệu trước, logic sau

🧠 Suy nghĩ

"Server có gì? Nó có tên, có IP, và có trạng thái sống/chết. Vậy mình gộp 3 thứ đó vào 1 hộp."

Vì sao viết struct trước? Vì dữ liệu là gốc rễ. Nếu sau này đổi struct sẽ phải sửa rất nhiều nơi khác trong chương trình.

📐 Logic

  • 3 trường: Name, IP, IsUp
  • Cần một hành vi: đổi trạng thái sống/chết → viết method SetStatus
  • Method phải sửa được giá trị gốc → dùng con trỏ *Server

💻 Code

type Server struct {
    Name string
    IP   string
    IsUp bool
}

// Dùng *Server (con trỏ) vì muốn SỬA giá trị thật
func (s *Server) SetStatus(status bool) {
    s.IsUp = status
}

🔍 Giải thích từng dòng

  • type Server struct { ... } → Định nghĩa "khuôn mẫu" cho một Server.
  • func (s *Server) SetStatus(...) → Đây gọi là method. Đọc là: "Hàm SetStatus gắn vào struct Server".
  • s *Server → Nhận con trỏ, nghĩa là nhận "địa chỉ nhà" chứ không phải bản sao. Nhờ vậy s.IsUp = status mới thay đổi được server gốc.

❓ Tự kiểm tra

Nếu bỏ dấu * thì sao? → Method sẽ chỉ sửa bản sao, server gốc vẫn giữ nguyên IsUp = false. Sai!

← Đọc yêu cầu như 1 dev thật