Go est un langage de programmation compilé et à typage statique. Cet exercice présente trois grandes notions du langage : les paquets, les fonctions et les variables.
Les applications Go sont organisées en paquets.
Un paquet est un ensemble de fichiers sources situés dans le même répertoire.
Tous les fichiers sources d'un répertoire doivent partager le même nom de paquet.
Quand un paquet est importé, seules les entités (fonctions, types, variables, constantes) dont le nom commence par une lettre majuscule peuvent être utilisées ou accessibles.
Le style de nommage recommandé en Go consiste à nommer les identifiants en camelCase, sauf ceux destinés à être accessibles depuis d'autres paquets, qui doivent être en PascalCase.
package lasagna
Go est à typage statique, ce qui signifie que toutes les variables doivent avoir un type défini à la compilation.
On peut définir une variable en spécifiant explicitement un type :
var explicit int // Explicitly typed
On peut aussi utiliser un initialiseur, et le compilateur attribuera à la variable le type correspondant à celui de l'initialiseur.
implicit := 10 // Implicitly typed as an int
Une fois déclarée, une variable peut recevoir des valeurs à l'aide de l'opérateur =.
Une fois déclarée, le type d'une variable ne peut plus jamais changer.
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
Une constante contient une donnée, exactement comme une variable, mais sa valeur ne peut pas changer pendant l'exécution du programme.
Les constantes se définissent avec le mot-clé const et peuvent être des nombres, des caractères, des strings ou des booléens :
const Age = 21 // Defines a numeric constant 'Age' with the value of 21
Les fonctions Go acceptent zéro ou plusieurs paramètres. Le type des paramètres doit être indiqué explicitement, il n'y a pas d'inférence de type.
Les valeurs sont renvoyées par une fonction à l'aide du mot-clé return.
Pour appeler une fonction, on indique son nom et on passe un argument pour chacun de ses paramètres.
À noter que Go prend en charge deux types de commentaires.
Les commentaires sur une seule ligne sont précédés de // et les commentaires multilignes sont insérés entre /* et */.
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
}
Dans cet exercice, tu vas écrire du code pour t'aider à cuisiner une excellente lasagne tirée de ton livre de cuisine préféré.
Quatre tâches t'attendent, toutes liées au temps passé à cuisiner la lasagne.
Définis la constante OvenTime avec le nombre de minutes pendant lesquelles la lasagne doit rester au four.
D'après le livre de cuisine, le temps de cuisson au four attendu est de 40 minutes :
OvenTime
// => 40
Définis la fonction RemainingOvenTime() qui prend en paramètre le nombre réel de minutes pendant lesquelles la lasagne a déjà été au four et renvoie combien de minutes la lasagne doit encore rester au four, d'après le temps de cuisson au four attendu de la tâche précédente.
func RemainingOvenTime(actual int) int {
// TODO
}
RemainingOvenTime(30)
// => 10
Définis la fonction PreparationTime qui prend en paramètre le nombre de couches que tu as ajoutées à la lasagne et renvoie combien de minutes tu as passées à préparer la lasagne, en supposant que chaque couche te prend 2 minutes à préparer.
func PreparationTime(numberOfLayers int) int {
// TODO
}
PreparationTime(2)
// => 4
Définis la fonction ElapsedTime qui prend deux paramètres : le premier paramètre est le nombre de couches que tu as ajoutées à la lasagne, et le second paramètre est le nombre de minutes pendant lesquelles la lasagne a été au four.
La fonction doit renvoyer le nombre total de minutes que tu as passées à cuisiner la lasagne, c'est-à-dire la somme du temps de préparation en minutes et du temps en minutes que la lasagne a passé au four à cet instant.
func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
// TODO
}
ElapsedTime(3, 20)
// => 26
Inscris-toi sur Exercism pour apprendre et maîtriser Go avec 34 concepts166 exercices, et un vrai mentorat humain, le tout gratuitement.