Golang: Interface ở consumer hay producer?

consumer nhé. còn đây là “kinh thư”. I was primarily an (Enterprise) Java developer before coming to Go. A couple of observations: One thing that I would recommend continuing from the Java world in Go: Java has the proverb that constructors should do little work. Go doesn’t have constructors per … Read more

DDD in Golang

Cấu trúc chung của một dự án Go thiết kế theo kiểu DDD (Domain – Driven Development). project-root/├── cmd/ # Application entry points (e.g., main.go for server, CLI)│ └── server/│ └── main.go├── internal/ # Core DDD layers, restricted to project│ ├── domain/ # Core business logic, pure and dependency-free│ │ … Read more

Return pointer và value trong Go

Một case rất đơn giản nhưng cần chú ý khi làm việc với Golang. Trong hàm, khi lấy giá trị, ta return pointer hay value luôn, chẳng hạn khi query dữ liệu từ database ? Sau đây là hình ảnh minh họa: Để khắc phục cách 2, tức return value … Read more

4 cách truyền biến môi trường vào code qua Docker

Tiêu đề có vẻ hơi loằng ngoằng. Bài toán của mình là dùng .env để đặt các biến môi trường và chỉ đưa vào các giá trị thật trên production. Dùng môi trường testing để test và dùng .gitignore để không push file .env lên github. Để đọc .env với … Read more

Full-search với Postgresql

Tính năng search PostgreSQL tương đối ổn áp, với cơ sở dữ liệu ít. Thông thường mình sẽ dùng Melisearch và Manticore. Tuy nhiên, với cơ sở dữ liệu ít thì thử với PostgreSQL lại rất đơn giản. Bảng sau so sánh giữa mysql, postgreSql và sqlite (chatgpt cung cấp): … Read more

Sử dụng Closure và Dependency Injection trong Golang

Trong lập trình Go, bạn có thể đã từng gặp tình huống muốn truyền một biến cấu hình (config), hoặc đối tượng kết nối CSDL (database), vào một hàm nhưng không thể làm trực tiếp vì hàm đó cần đúng một định dạng. Giải pháp? Closure kết hợp với Dependency … Read more

Cách dùng interface{} đúng cách trong Golang

Interface đóng một vai trò quan trọng trong kiến trúc phần mềm. Điều khiến chúng trở thành một nguyên lý vững chắc của kiến trúc nằm ở khả năng trừu tượng hóa của chúng. Một trong những khái niệm quen thuộc mà các kỹ sư phần mềm phải đối mặt … Read more

Show HTML đơn giản với Golang Web app

Ảnh này show một Controller đơn giản trên golang, mình dùng go-chi. Ta có một template với tên “exam” và content thì chỉ có vài html đơn giản với 2 biến Title và Done. Ta tạo một annonymous struct (struct không tên, dùng 1 lần), rồi pass 2 value vào, … Read more