Go enthält grundlegende numerische Typen, die Mengen von Ganzzahl- oder Gleitkommawerten darstellen können. Es gibt verschiedene Typen, je nachdem, welche Größe von Wert du brauchst und auf welcher Architektur der Computer läuft, auf dem die Anwendung ausgeführt wird (z. B. 32-Bit und 64-Bit).
Für diese Übung hast du es nur mit den folgenden zu tun:
int: z. B. 0, 255, 2147483647.
Eine vorzeichenbehaftete Ganzzahl, die mindestens 32 Bit groß ist (Wertebereich: -2147483648 bis 2147483647).
Das hängt aber von der Architektur des Systems ab.
Die meisten modernen Computer sind 64 Bit, deshalb ist int 64 Bit groß (Wertebereich: -9223372036854775808 bis 9223372036854775807).
float64: z. B. 0.0, 3.14.
Enthält die Menge aller 64-Bit-Gleitkommazahlen.
uint: z. B. 0, 255.
Eine vorzeichenlose Ganzzahl, die genauso groß ist wie int (Wertebereich: 0 bis 4294967295 bei 32 Bit und 0 bis 18446744073709551615 bei 64 Bit)
Zahlen können durch Typkonvertierung in andere numerische Typen umgewandelt werden.
Go unterstützt viele der üblichen arithmetischen Operatoren:
| Operator | Beispiel |
|---|---|
+ |
4 + 6 == 10 |
- |
15 - 10 == 5 |
* |
2 * 3 == 6 |
/ |
13 / 3 == 4 |
% |
13 % 3 == 1 |
Bei der Ganzzahldivision wird der Rest verworfen (z. B. 5 / 2 == 2).
Go hat für die obigen Operatoren eine Kurzform für die Zuweisung (z. B. ist a += 5 die Kurzform von a = a + 5).
Go unterstützt außerdem die Inkrement- und Dekrement-Anweisungen ++ und -- (z. B. a++).
Das Konvertieren zwischen Typen erfolgt über eine Funktion mit dem Namen des Zieltyps. Zum Beispiel:
var x int = 42 // x has type int
f := float64(x) // f has type float64 (ie. 42.0)
var y float64 = 11.9 // y has type float64
i := int(y) // i has type int (ie. 11)
In vielen Sprachen kannst du arithmetische Operationen mit Variablen unterschiedlicher Typen durchführen, in Go führt das jedoch zu einem Fehler. Zum Beispiel:
var x int = 42
// this line produces an error
value := float32(2.0) * x // invalid operation: mismatched types float32 and int
// you must convert int type to float32 before performing arithmetic operation
value := float32(2.0) * float32(x)
In dieser Übung schreibst du Code, um die Produktion in einer Autofabrik zu analysieren.
Die Autos werden am Fließband produziert. Das Fließband hat eine bestimmte Geschwindigkeit, die sich ändern lässt. Je schneller das Fließband läuft, desto mehr Autos werden produziert. Wenn du jedoch die Geschwindigkeit des Fließbands änderst, ändert sich auch die Anzahl der Autos, die erfolgreich produziert werden, also der Autos ohne Fehler in ihrer Produktion.
Implementiere eine Funktion, die die Anzahl der pro Stunde produzierten Autos und die Erfolgsquote entgegennimmt und die Anzahl der pro Stunde erfolgreich hergestellten Autos berechnet.
Die Erfolgsquote wird als Prozentwert angegeben, von 0 bis 100:
CalculateWorkingCarsPerHour(1547, 90)
// => 1392.3
Hinweis: Der Rückgabewert sollte ein float64 sein.
Implementiere eine Funktion, die die Anzahl der pro Stunde produzierten Autos und die Erfolgsquote entgegennimmt und berechnet, wie viele Autos pro Minute erfolgreich produziert werden:
CalculateWorkingCarsPerMinute(1105, 90)
// => 16
Hinweis: Der Rückgabewert sollte ein int sein.
Jedes Auto kostet normalerweise 10.000 $ in der Einzelproduktion, unabhängig davon, ob es erfolgreich ist oder nicht. Mit etwas Planung lassen sich aber 10 Autos zusammen für 95.000 $ produzieren.
Zum Beispiel lassen sich 37 Autos so produzieren: 37 = 3 x Gruppen zu zehn + 7 einzelne Autos
Die Kosten für 37 Autos sind also: 3*95.000+7*10.000=355.000
Implementiere die Funktion CalculateCost, die die Kosten für die Produktion einer Anzahl von Autos berechnet, unabhängig davon, ob sie erfolgreich sind:
CalculateCost(37)
// => 355000
CalculateCost(21)
// => 200000
Hinweis: Der Rückgabewert sollte ein uint sein.
Melde dich bei Exercism an, um Go mit 34 Konzepte165 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.