Quando esegui goa gen
, Goa segue un processo sistematico per trasformare il tuo
design in codice funzionante:
Goa prima crea ed esegue un programma temporaneo:
Durante questa fase, Goa crea un programma temporaneo main.go
che:
Questo programma temporaneo serve come punto di ingresso per trasformare il tuo design in codice. Viene creato e rimosso automaticamente durante il processo di generazione, quindi non hai mai bisogno di gestirlo direttamente.
Durante questa fase, Goa carica e valuta il tuo pacchetto di design:
Questa fase di valutazione è critica poiché trasforma il tuo design dichiarativo in un modello strutturato che può essere utilizzato per la generazione del codice.
Una volta che le espressioni sono state validate, vengono passate ai generatori di
codice di Goa. I generatori utilizzano queste espressioni come dati di input per renderizzare vari
template di codice. Generano codice specifico per il trasporto HTTP e gRPC, creano
tutti i file di supporto necessari e scrivono l’output completo nella directory gen/
.
Questo passaggio di generazione produce tutto il codice necessario per eseguire il tuo servizio
mantenendo la coerenza in tutto il codebase.
Una tipica struttura di progetto generata:
myservice/
├── cmd/ # Comandi di esempio generati
│ └── calc/
│ ├── grpc.go
│ └── http.go
├── design/ # I tuoi file di design
│ └── design.go
├── gen/ # Codice generato
│ ├── calc/ # Codice specifico del servizio
│ │ ├── client/
│ │ ├── endpoints/
│ │ └── service/
│ └── http/ # Livello di trasporto
│ ├── client/
│ └── server/
└── myservice.go # Stub di implementazione del servizio generato
Consulta la sezione Codice Generato per maggiori dettagli sul codice generato.