Minicorso Let’s Golang – 2ª puntata

 

Il Meetup

Go è un linguaggio di programmazione in forte espansione negli ultimi anni ideato da 3 sviluppatori di Google nel 2007 (prima release ufficiale: novembre 2009). Quest’ultimi decisero di creare un linguaggio che avesse i pregi dei linguaggi di programmazione usati in precedenza ma non i loro difetti. È fortemente ispirato a CC++ e Assembly e, tra le sue caratteristiche, spicca che sia strongly-typed e compilato. Se anche tu vuoi “sporcarti” le mani con Go e realizzare insieme un’app di esempio che ti consenta di apprendere i suoi concetti fondamentali, ti consigliamo di non mancare a questo minicorso! 🚀 Attraverso un talk pratico, andremo a realizzare una web api che si occuperà di gestire i nostri TODO. Questa web api sarà una semplice CRUD che esporrà le rotte per: aggiungere, leggere, modificare e cancellare i nostri TODO. Il layout della solution sarà quello tipico di una struttura multi-layered (presentation, business logic e DAL).

2ª puntata

In questa seconda puntata del minicorso su Go riprenderemo il progetto avviato la scorsa volta e lo porteremo a termine andando ad implementare il layer logico e il DAL (ossia il componente che ha il compito di “parlare” con il database). Il database che useremo sarà PostgreSQL, il quale verrà eseguito tramite Docker. Nello sviluppare metteremo in pratica i principi SOLID che stanno alla base della programmazione. BONUS: vedremo come utilizzare la Dependency Injection in Go 💉.

Intro

  • Interfaces: introduzione sulle interfacce. Cosa sono e utilizzo. Analogie e differenze con altri linguaggi;
  • ORM: introduzione generica sugli ORM. L’ORM di Go si chiama “GORM”;
  • Error: errori in Go, cosa sono, come si gestiscono e come andrebbero gestiti (IMO).

Practice

Ingredienti

  • Go;
  • go fmt;
  • staticcheck;
  • Docker;
  • DBeaver (o qualsiasi altro client che supporti Postgres);
  • VSCode (o qualsiasi altro IDE);
  • Postman (o qualsiai altro tool per testare REST-api).

Step

  • Setup PostgreSQL. Avvio di un server PostgreSQL in localhost tramite Docker. Creazione del DB, dello schema e della tabella (tutti chiamati “todos” per coerenza);
  • Definizione di un errore custom in Go;
  • Setup di GORM. Inizializzazione del client Postgres che useremo per interagire con il DB;
  • Definizione dell’interfaccia del DB e sua implementazione;
  • Definizione dell’interfaccia del business logic layer e sua implementazione;
  • Injection della dipendenza fornita dal business logic layer nel controller per fruire delle sue funzionalità;
  • Test finali con Postman.

Ivan Pesenti

Software Developer Ciao 👋! Sono Ivan Pesenti. Ho 26 anni e lavoro come software developer dal 2014. Attualmente faccio parte di Sorint Lab una software house che opera a livello internazionale in svariati ambiti. Ricopro il ruolo di sviluppatore con particolare focus sulla parte server-side. La mia peculiarità lavorativa è la particolare attenzione nello scrivere codice pulito, sicuro e testabile. In questi ambiti investo gran parte del mio tempo lavorativo e non. Sono una persona molto attiva nella community in quanto, oltre a fare meetup occasionalmente, scrivo articoli sulla piattaforma “dev.to” e do lezioni private di informatica in svariati ambiti (dallo sviluppo, all’uso di software, ecc.). Credo fortemente nella condivisione e nella formazione e penso che sia un punto imprescindibile nella crescita professionale e umana di ogni persona. Nel mio tempo libero cerco di tenermi allenato praticando vari sport anche se il mio amore incondizionato rimane per il calcio. Adoro gli anime, i tatuaggi, il mare e trascorrere tempo con le altre persone.

Agenda

  • Benvenuto
  • Talk
  • Domande e risposte
  • Quiz & Lottery finale

Credits

Evento organizzato da:

In collaborazione con:

Powered by:

Gli altri meetup

DevOps: l’evoluzione da Agile a DevX

DevOps: l’evoluzione da Agile a DevX

In questa puntata vedremo un approccio teorico su come si può spingere di più in azienda con i team cross e come “Dev(Ops|X)” può aiutare ad alleggerire il carico del programmatore portando codice di valore!