Go ist eine statisch typisierte, kompilierte Programmiersprache. In dieser Übung lernst du drei wichtige Sprachmerkmale kennen: Pakete, Funktionen und Variablen.
Go-Anwendungen werden in Paketen organisiert.
Ein Paket ist eine Sammlung von Quelldateien, die im selben Verzeichnis liegen.
Alle Quelldateien in einem Verzeichnis müssen denselben Paketnamen haben.
Wenn ein Paket importiert wird, können nur Entitäten (Funktionen, Typen, Variablen, Konstanten) verwendet bzw. darauf zugegriffen werden, deren Namen mit einem Großbuchstaben beginnen.
Der empfohlene Stil für die Benennung in Go ist, dass Bezeichner in camelCase benannt werden, außer denen, die paketübergreifend zugänglich sein sollen, die PascalCase verwenden sollten.
package lasagna
Go ist statisch typisiert, das heißt, alle Variablen müssen zur Kompilierzeit einen definierten Typ haben.
Variablen können definiert werden, indem du einen Typ explizit angibst:
var explicit int // Explicitly typed
Du kannst auch einen Initialisierungswert verwenden, und der Compiler weist der Variablen einen Typ zu, der zum Typ des Initialisierungswerts passt.
implicit := 10 // Implicitly typed as an int
Nach der Deklaration kannst du Variablen mit dem Operator = Werte zuweisen.
Nach der Deklaration kann sich der Typ einer Variablen nie ändern.
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
Konstanten enthalten genau wie Variablen einen Datenwert, aber ihr Wert kann sich während der Ausführung des Programms nicht ändern.
Konstanten werden mit dem Schlüsselwort const definiert und können Zahlen, Zeichen, Strings oder boolesche Werte sein:
const Age = 21 // Defines a numeric constant 'Age' with the value of 21
Go-Funktionen akzeptieren null oder mehr Parameter. Parameter müssen explizit typisiert sein, es gibt keine Typinferenz.
Werte werden mit dem Schlüsselwort return aus Funktionen zurückgegeben.
Eine Funktion wird aufgerufen, indem du den Funktionsnamen angibst und für jeden Parameter der Funktion ein Argument übergibst.
Beachte, dass Go zwei Arten von Kommentaren unterstützt.
Einzeilige Kommentare werden mit // eingeleitet, mehrzeilige Kommentare zwischen /* und */ eingefügt.
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 dieser Übung schreibst du etwas Code, der dir hilft, eine großartige Lasagne aus deinem Lieblingskochbuch zu kochen.
Du hast vier Aufgaben, die sich alle mit der Zeit befassen, die du für das Kochen der Lasagne brauchst.
Definiere die Konstante OvenTime mit der Anzahl an Minuten, die die Lasagne im Ofen sein sollte.
Laut dem Kochbuch beträgt die erwartete Backzeit in Minuten 40:
OvenTime
// => 40
Definiere die Funktion RemainingOvenTime(). Sie nimmt die tatsächlichen Minuten, die die Lasagne schon im Ofen war, als Parameter entgegen und gibt zurück, wie viele Minuten die Lasagne noch im Ofen bleiben muss. Das basiert auf der erwarteten Backzeit in Minuten aus der vorherigen Aufgabe.
func RemainingOvenTime(actual int) int {
// TODO
}
RemainingOvenTime(30)
// => 10
Definiere die Funktion PreparationTime. Sie nimmt die Anzahl der Schichten, die du auf die Lasagne gelegt hast, als Parameter entgegen und gibt zurück, wie viele Minuten du für die Vorbereitung der Lasagne gebraucht hast. Geh dabei davon aus, dass jede Schicht 2 Minuten Vorbereitung braucht.
func PreparationTime(numberOfLayers int) int {
// TODO
}
PreparationTime(2)
// => 4
Definiere die Funktion ElapsedTime. Sie nimmt zwei Parameter entgegen: Der erste Parameter ist die Anzahl der Schichten, die du auf die Lasagne gelegt hast, und der zweite Parameter ist die Anzahl der Minuten, die die Lasagne schon im Ofen war.
Die Funktion soll zurückgeben, wie viele Minuten du insgesamt mit dem Kochen der Lasagne verbracht hast. Das ist die Summe aus der Vorbereitungszeit in Minuten und der Zeit in Minuten, die die Lasagne bis jetzt im Ofen verbracht hat.
func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
// TODO
}
ElapsedTime(3, 20)
// => 26
Melde dich bei Exercism an, um Go mit 35 Konzepte167 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.