各パッケージ、構造体、インタフェース、型の詳細な説明については、ここでは触れませんので、godocを参照してください。
"ドメイン駆動設計"(通称DDD)と "クリーンアーキテクチャ "を採用していますが、プロジェクトのレイアウトはGolangのレイアウト規約(https://github.com/golang-standards/project-layout )に基づいています。
図中の依存関係の流れを逆にしない 例:pkg → usecase や infrastructure → adapter は禁止する
usecase/repo
and usecase/gateway
の実装クリーンアーキテクチャは、ビジネスルールと技術的な実装を分離し、システムコンポーネント間の明確な境界を定義するアプローチである。システムコンポーネントはポート(インターフェース)を通じて接続され、「コードの依存関係は外側のレベルから内側にしか移動できない」という主要なルールを満たします。詳細は、本書をご覧ください。
データフローの例: