Lập trình Go 22/09/2026 6 phút

Livelock và starvation trong Go: khi goroutine bận rộn mà không tiến, hoặc bị bỏ đói

Deadlock làm mọi goroutine đứng; livelock làm chúng bận rộn mà không tiến; starvation bỏ đói số ít. Đo thật: mẫu nhường nhau hiếm khi livelock trên runtime Go (1,03x lãng phí), nhưng starvation lộ 12x mất cân bằng dù Go mutex chống đói hoàn toàn. Cách phát hiện và tránh. Go 1.23.

Lập trình Go 22/09/2026 6 phút

unsafe.Pointer trong Go: bốn mẫu chuyển đổi hợp lệ, và quy tắc uintptr sống còn

unsafe.Pointer cho phép gạt kiểu an toàn sang bên, nhưng chỉ vài mẫu chuyển đổi là hợp lệ và được runtime bảo đảm. Đo thật trong Go 1.23: các mẫu đúng chạy sạch, go vet bắt mẫu sai lưu uintptr vào biến, và chuyển []byte sang string không sao chép nhanh gấp 136 lần.

Lập trình Go 22/09/2026 5 phút

go.work trong Go: làm việc nhiều module cùng lúc mà không cần replace thủ công

go.work cho phép làm việc với nhiều module local đồng thời trong một workspace, thay cho replace thủ công dễ commit nhầm. Đo thật trong Go 1.23: không go.work thì build lỗi package không tìm thấy, có go.work thì dùng lib local ngay, và go.mod vẫn sạch không một dòng replace.

Lập trình Go 22/09/2026 6 phút

Clean Architecture trong Go: hướng phụ thuộc mà compiler tự ép

Clean Architecture đặt logic nghiệp vụ ở trung tâm, mọi phụ thuộc chỉ trỏ vào trong. Đo thật trong Go 1.23: domain định nghĩa interface (port), infra hiện thực, và lệnh cấm import cycle của Go biến quy tắc kiến trúc thành lỗi biên dịch — bạn không thể làm domain phụ thuộc hạ tầng.