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

Streaming JSON lớn trong Go: json.Decoder thay vì Unmarshal cả tệp

json.Unmarshal cần toàn bộ dữ liệu trong RAM rồi dựng mọi struct cùng lúc — bộ nhớ tỉ lệ với kích thước tệp, tệp GB làm sập app. json.Decoder đọc lười từng phần tử, giữ bộ nhớ hằng số. Đo thật trong Go: xử lý tệp JSON 41.6 MB, Unmarshal tốn +142.5 MB heap, streaming chỉ +2.3 MB — cùng kết quả.

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

Repository pattern trong Go: tách tầng dữ liệu bằng interface, và khi nào nó thành lớp thừa

Repository pattern giấu chi tiết lưu trữ sau một interface, để logic nghiệp vụ không phụ thuộc CSDL cụ thể. Đo thật trong Go 1.23: repo dịch lỗi lưu trữ thành lỗi domain để errors.Is dùng ở tầng trên, service test được bằng fake, và nêu thẳng chỗ repository giấu mất tối ưu CSDL.