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

LRU cache tự cài trong Go: get/put O(1) bằng map và danh sách liên kết đôi

LRU cache khi đầy loại phần tử lâu nhất chưa dùng. Nó cần cả tra cứu theo key và cập nhật thứ tự dùng đều O(1) — không cấu trúc đơn lẻ nào làm được cả hai. Bài tự cài trong Go bằng map + danh sách liên kết đôi, đo thật: loại đúng phần tử ít dùng nhất, get+put chỉ 79.6 ns O(1) hằng số.

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

Fuzzing native trong Go (1.18+): để máy tự sinh input tìm bug

Test đơn vị chỉ phủ những input lập trình viên nghĩ tới. Fuzzing tự sinh hàng triệu input kỳ quái để tìm panic và ca biên — tích hợp thẳng vào go test từ Go 1.18. Đo thật: một hàm test thường XANH nhưng fuzz tìm ra input '0' làm panic trong dưới 1 giây, tự rút gọn tối giản và lưu làm hồi quy.

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

Property-based testing trong Go: khẳng định tính chất, để máy tìm phản ví dụ

Test ví dụ kiểm từng cặp input-output cụ thể; property-based testing khẳng định một tính chất đúng với mọi input rồi để máy sinh hàng vạn input tìm phản ví dụ. Đo thật trong Go với testing/quick: bất biến sắp xếp qua 100k input, và round-trip lộ bug logic khi list rỗng ra [0] — thứ fuzzing trần bỏ lọt.

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

Integration test với testcontainers trong Go: dựng dịch vụ thật trong Docker

Mock chỉ giả lập hành vi bạn nghĩ dịch vụ có; bug thật nằm ở khác biệt với dịch vụ thật. testcontainers-go dựng database/Redis thật trong Docker ngay trong test rồi tự dọn. Đo thật: code testcontainers biên dịch sạch, và một integration test thật chống Redis (không mock) pass — kèm báo cáo trung thực về yêu cầu Docker socket.

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

Mocking với gomock và mockgen trong Go: sinh mock tự động từ interface

Mock cô lập đơn vị khỏi phụ thuộc: một cài đặt giả của interface mà bạn khai hành vi mong đợi. gomock còn verify — đúng lời gọi, đúng đối số, đúng số lần. Đo thật: mockgen sinh mock từ interface, 3 test qua mock pass, và gomock bắt lời gọi sai đối số (kỳ vọng 200 mà code gọi 100).

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

Golden file testing trong Go: lưu đầu ra kỳ vọng vào tệp, so tự động

Hàm sinh đầu ra lớn (báo cáo, HTML, JSON, mã sinh) khó viết assertion bằng tay. Golden file lưu đầu ra kỳ vọng vào một tệp, test so từng byte; đổi có chủ đích thì chạy -update ghi lại. Đo thật trong Go: sinh golden, so pass, đổi code thì test bắt khác biệt kèm diff, và -update chấp nhận thay đổi.