Go è un linguaggio di programmazione compilato e a tipizzazione statica. In questo esercizio introdurremo tre caratteristiche principali del linguaggio: i package, le funzioni e le variabili.
Le applicazioni Go sono organizzate in package.
Un package è un insieme di file sorgente che si trovano nella stessa directory.
Tutti i file sorgente in una directory devono condividere lo stesso nome di package.
Quando si importa un package, è possibile usare o accedere solo alle entità (funzioni, tipi, variabili, costanti) il cui nome inizia con una lettera maiuscola.
Lo stile di denominazione consigliato in Go prevede che gli identificatori siano scritti in camelCase, tranne quelli che devono essere accessibili da altri package, che dovrebbero usare PascalCase.
package lasagna
Go è a tipizzazione statica, il che significa che tutte le variabili devono avere un tipo definito in fase di compilazione.
Le variabili si possono definire specificando esplicitamente un tipo:
var explicit int // Explicitly typed
Puoi anche usare un valore di inizializzazione: il compilatore assegnerà alla variabile un tipo corrispondente a quello del valore.
implicit := 10 // Implicitly typed as an int
Una volta dichiarata, a una variabile si possono assegnare dei valori usando l'operatore =.
Una volta dichiarata, il tipo di una variabile non può mai cambiare.
count := 1 // Assign initial value
count = 2 // Update to new value
count = false // This throws a compiler error due to assigning a non `int` type
Le costanti contengono un dato proprio come le variabili, ma il loro valore non può cambiare durante l'esecuzione del programma.
Le costanti si definiscono con la parola chiave const e possono essere numeri, caratteri, stringhe o valori booleani:
const Age = 21 // Defines a numeric constant 'Age' with the value of 21
Le funzioni Go accettano zero o più parametri. I parametri devono avere un tipo esplicito: non c'è inferenza di tipo.
I valori vengono restituiti dalle funzioni usando la parola chiave return.
Una funzione si chiama specificando il suo nome e passando un argomento per ciascuno dei suoi parametri.
Nota che Go supporta due tipi di commenti.
I commenti su una sola riga sono preceduti da //, mentre i commenti su più righe si inseriscono tra /* e */.
package greeting
// Hello is a public function.
func Hello (name string) string {
return hi(name)
}
// hi is a private function.
func hi (name string) string {
return "hi " + name
}
In questo esercizio scriverai del codice che ti aiuterà a cucinare una lasagna perfetta dal tuo libro di ricette preferito.
Ci sono quattro attività, tutte legate al tempo necessario per cucinare la lasagna.
Definisci la costante OvenTime con quanti minuti la lasagna deve stare in forno.
Secondo il libro di ricette, il tempo previsto in forno in minuti è 40:
OvenTime
// => 40
Definisci la funzione RemainingOvenTime() che prende come parametro i minuti effettivi che la lasagna è stata in forno e restituisce quanti minuti la lasagna deve ancora restare in forno, in base al tempo previsto in forno in minuti dell'attività precedente.
func RemainingOvenTime(actual int) int {
// TODO
}
RemainingOvenTime(30)
// => 10
Definisci la funzione PreparationTime che prende come parametro il numero di strati che hai aggiunto alla lasagna e restituisce quanti minuti hai impiegato a prepararla, supponendo che ogni strato richieda 2 minuti di preparazione.
func PreparationTime(numberOfLayers int) int {
// TODO
}
PreparationTime(2)
// => 4
Definisci la funzione ElapsedTime che prende due parametri: il primo parametro è il numero di strati che hai aggiunto alla lasagna, e il secondo parametro è il numero di minuti che la lasagna è stata in forno.
La funzione dovrebbe restituire quanti minuti in totale hai lavorato a cucinare la lasagna, cioè la somma del tempo di preparazione in minuti e del tempo in minuti che la lasagna ha passato in forno fino a quel momento.
func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
// TODO
}
ElapsedTime(3, 20)
// => 26
Iscriviti a Exercism per imparare e padroneggiare Go con 35 concetti167 esercizi e il mentoring di persone reali, tutto gratis.