1.5 — Interface & Immutability: hai vũ khí thiết kế của Go
Phần A — Interface 1. Problem Statement Interface đã xuất hiện ở mọi chương trước như “công cụ giảm coupling”. Chương này trả lời các câu hỏi mà kỹ sư senior thực sự vướng: interface đặt ở đâu? To hay nhỏ? Khai báo khi nào? Vì sao interface Go khác Java/TS ở tầng triết lý — và điều đó đổi cách thiết kế ra sao? 2. Điều làm interface Go khác biệt: implicit satisfaction package storage type Saver interface { Save(ctx context.Context, key string, data []byte) error } Bất kỳ type nào có method Save đúng chữ ký — tự động thỏa mãn Saver. Không implements, không import package chứa interface. Hệ quả thiết kế sâu sắc: ...