A Go egy statikusan típusos, fordított programozási nyelv. Ez a feladat a nyelv három fontos jellemzőjét mutatja be: a csomagokat, a függvényeket és a változókat.
A Go-alkalmazások csomagokba szerveződnek.
Egy csomag az ugyanabban a könyvtárban található forrásfájlok gyűjteménye.
Egy könyvtár összes forrásfájljának ugyanazt a csomagnevet kell használnia.
Amikor importálsz egy csomagot, csak azok az entitások (függvények, típusok, változók, konstansok) használhatók és érhetők el, amelyeknek a neve nagybetűvel kezdődik.
A Go ajánlott elnevezési stílusa szerint az azonosítókat camelCase stílusban nevezzük el, kivéve azokat, amelyeknek csomagokon átnyúlóan elérhetőnek kell lenniük, mert azokat PascalCase stílusban kell írni.
package lasagna
A Go statikusan típusos, ami azt jelenti, hogy minden változónak már fordításkor meg kell lennie a típusának.
A változókat definiálhatod úgy, hogy kifejezetten megadod a típusukat:
var explicit int // Explicitly typed
Használhatsz kezdőértéket is, ilyenkor a fordító a kezdőérték típusának megfelelő típust rendeli a változóhoz.
implicit := 10 // Implicitly typed as an int
Amiután egy változót deklaráltál, az = operátorral adhatsz neki értéket.
Egy változó típusa a deklaráció után soha nem változhat meg.
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
A konstansok ugyanúgy egy adatot tárolnak, mint a változók, de az értékük a program futása közben nem változhat meg.
A konstansokat a const kulcsszóval definiáljuk, és lehetnek számok, karakterek, stringek vagy Boolean értékek:
const Age = 21 // Defines a numeric constant 'Age' with the value of 21
A Go-függvények nulla vagy több paramétert fogadnak. A paraméterek típusát mindig meg kell adni, itt nincs típuskövetkeztetés.
A függvények a return kulcsszóval adják vissza az értékeket.
Egy függvényt úgy hívunk meg, hogy megadjuk a nevét, és minden paraméteréhez átadunk egy argumentumot.
Fontos, hogy a Go kétféle megjegyzést támogat.
Az egysoros megjegyzések előtt // áll, a többsorosakat pedig /* és */ közé írjuk.
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
}
Ebben a feladatban kódot írsz majd, hogy egy remek lasagnét készíthess a kedvenc szakácskönyvedből.
Négy részfeladat vár rád, és mindegyik a lasagna elkészítésével töltött időhöz kapcsolódik.
Definiáld az OvenTime konstanst azzal, hogy hány percig kell a lasagnának a sütőben lennie.
A szakácskönyv szerint a várható sütési idő 40 perc:
OvenTime
// => 40
Definiáld a RemainingOvenTime() függvényt, amely paraméterként megkapja, hogy a lasagna hány perce van a sütőben, és visszaadja, hogy a lasagnának még hány percig kell a sütőben maradnia, az előző részfeladatban megadott várható sütési idő alapján.
func RemainingOvenTime(actual int) int {
// TODO
}
RemainingOvenTime(30)
// => 10
Definiáld a PreparationTime függvényt, amely paraméterként megkapja a lasagnába rakott rétegek számát, és visszaadja, hogy hány percet töltöttél a lasagna előkészítésével, feltéve, hogy egy réteg előkészítése 2 percet vesz igénybe.
func PreparationTime(numberOfLayers int) int {
// TODO
}
PreparationTime(2)
// => 4
Definiáld az ElapsedTime függvényt, amely két paramétert vár: az első paraméter a lasagnába rakott rétegek száma, a második pedig az, hogy hány perce van a lasagna a sütőben.
A függvénynek vissza kell adnia, hogy összesen hány percet dolgoztál a lasagna elkészítésén, ami az előkészítési idő percben és a lasagna által a sütőben eddig eltöltött idő összege.
func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
// TODO
}
ElapsedTime(3, 20)
// => 26
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Go nyelvet 35 fogalom167 feladat segítségével, valódi emberi mentorálással, mindez ingyen.