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ậys.IsUp = statusmớ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!