Lesson 20 — Package & Module
3 module tương tác: ranh giới internal/, thuật toán MVS (Minimum Version Selection), và đồ thị dependency từ go.mod.
1. Internal package boundary
Quy tắc: package nằm tại …/internal/… chỉ import được từ cây con của cha gần nhất chứa internal. Chọn file gốc để xem có import được shared/internal/auth không.
Cây thư mục module
github.com/acme/platform:
Chọn file gốc thử import:
Chưa thử.
Cho phép
Bị chặn
File đang chọn
2. MVS Selector — Go chọn version nào?
Cho 3 module + các require, click Run MVS để xem Go chọn version cho từng dep. Quy tắc: chọn max của các yêu cầu (≠ npm chọn highest compatible).
3. Module dependency graph — parse go.mod
Paste nội dung go.mod, parser sẽ extract module + require rồi vẽ DAG. Hỗ trợ block require ( ... ), comment // indirect, dấu chú thích.