You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: de/02.2.md
+29-29
Original file line number
Diff line number
Diff line change
@@ -15,36 +15,36 @@ Definiere mehrere Variablen.
15
15
16
16
// Definiere drei Variablen vom Typ "type"
17
17
var vname1, vname2, vname3 type
18
-
18
+
19
19
Definiere eine Variable mit einem Startwert.
20
20
21
21
// Definiere eine Variable mit dem Namen “variableName” vom Typ "type" und dem Wert "value"
22
22
var variableName type = value
23
-
23
+
24
24
Definiere mehrere Variablen mit einem Startwert.
25
25
26
26
/*
27
27
Definiere drei Variablen vom Typ "type" und gib ihnen drei Startwerte.
28
28
vname1 ist gleich v1, vname2 ist gleich v2, vname3 ist gleich v3
29
29
*/
30
30
var vname1, vname2, vname3 type = v1, v2, v3
31
-
31
+
32
32
Findest Du es nicht auch ein wenig mühsehlig, Variablen auf diesem Weg zu definieren? Keine Sorge, denn das Team hinter Go hat auch so gedacht. Daher kannst Du Variablen Startwerte geben, ohne explizit den Datentyp zu definieren. Der Code würde dann so aussehen:
33
33
34
34
/*
35
35
Definiere drei Variablen vom Typ "type" und gib ihnen drei Ausgangswerte.
36
36
vname1 ist gleich v1, vname2 ist gleich v2, vname3 ist gleich v3
37
37
*/
38
38
var vname1, vname2, vname3 = v1, v2, v3
39
-
39
+
40
40
Schön, ich weiß das dies immer noch nicht einfach genug für Dich ist. Mal schauen, wie wir das lösen können.
41
41
42
42
/*
43
43
Definiere drei Variablen ohne den Typ "type", ohne das Schlüsselwort "var" und gib ihnen Startwerte.
44
44
vname1 ist gleich v1,vname2 ist gleich v2,vname3 ist gleich v3
45
45
*/
46
46
vname1, vname2, vname3 := v1, v2, v3
47
-
47
+
48
48
49
49
So sieht es schon viel besser aus. Nutze `:=`, um `var` und `type` zu ersetzen. Es handelt sich hierbei um eine Kurzschreibweise. Aber warte, es gibt einen kleinen Haken: diese Form der Definition kann nur innerhalb von Fuktionen genutzt werden. Der Compiler wird sonst eine Fehlermeldung ausgeben, wenn Du es trotzdem außerhalb der `{}` einer Funktion versuchst. Daher nutzen wir meist das Schlüsselwort `var` um globale Variablen zu definieren oder die Funktion `var()`.
50
50
@@ -59,15 +59,15 @@ Wenn Du Variablen in Deinem Programm definierst, aber keine Verwendung finden, w
59
59
func main() {
60
60
var i int
61
61
}
62
-
62
+
63
63
## Konstanten
64
64
65
65
Konstanten sind Werte, die während der Kompilierung festgelegt werden und während der Laufzeit nicht veränderbar sind. In Go kannst Du Konstanten als Wert Nummern, Booleans oder Strings geben.
66
66
67
67
Definiere eine Konstante wie folgt.
68
68
69
69
const constantName = value
70
-
// Du kannst auch den Datentyp hinzufügen, wenn nötig
70
+
// Du kannst auch den Datentyp hinzufügen, wenn nötig
71
71
const Pi float32 = 3.1415926
72
72
73
73
Mehr Beispiele.
@@ -76,7 +76,7 @@ Mehr Beispiele.
76
76
const i = 10000
77
77
const MaxThread = 10
78
78
const prefix = "astaxie_"
79
-
79
+
80
80
## Grundlegende Datentypen
81
81
82
82
### Boolean
@@ -91,7 +91,7 @@ In Go nutzen wir `bool`, um Booleans (Wahrheitswerte) auszudrücken, die entwede
91
91
valid := false // Kurzschreibweise einer Definition
92
92
available = true // Eine Variable deklarieren
93
93
}
94
-
94
+
95
95
### Numerische Datentypen
96
96
97
97
Der Datentyp Integer (ganze Zahlen) kann sowohl den positiven, als auch den negativen Zahlenraum umfassen, was durch ein Vorzeichen kenntlich gemacht wird. Go besitzt `int` und `uint`, welche den selben Wertebereich haben. Dessen Größe hängt aber vom Betriebssystem ab. Es werden 32-Bit unter 32-Bit Betriebssystemen verwendet und 64-Bit unter 64-Bit Betriebssystemen. Go umfasst außerdem Datentypen mit einer spezifischen Länge: `rune`, `int8`, `int16`, `int32`, `int64`, `byte`, `uint8`, `uint16`, `uint32` und `uint64`. Bedenke, dass `rune` ein Alias für `int32` ist und `byte` dem `uint8` gleicht.
@@ -114,7 +114,7 @@ War das schon alles? Nein! Go unterstützt auch komplexe Zahlen. `complex128` (b
114
114
var c complex64 = 5+5i
115
115
// Ausgabe: (5+5i)
116
116
fmt.Printf("Der Wert ist: %v", c)
117
-
117
+
118
118
### Strings
119
119
120
120
Wir sprachen vorhin darüber, das Go eine native UTF-8 Unterstützung mit sich bringt. Strings (Zeichenketten) werden durch Anführungszeichen `""` gekennzeichet, oder durch Backticks (rückwärts geneigtes Hochkomma) ``` `` ```.
@@ -140,28 +140,28 @@ Aber was ist, wenn ich wirklich nur ein Zeichen in einem String ändern möchte?
140
140
c[0] = 'c'
141
141
s2 := string(c) // Wandle den Wert in eine String zurück
142
142
fmt.Printf("%s\n", s2)
143
-
143
+
144
144
145
145
Nutze den `+` Operator, um zwei Strings zu verknüpfen.
146
146
147
147
s := "Hallo"
148
148
m := " Welt"
149
149
a := s + m
150
150
fmt.Printf("%s\n", a)
151
-
151
+
152
152
153
153
oder auch
154
154
155
155
s := "Hallo"
156
156
s = "c" + s[1:] // Du kannst die Werte mit Hilfe des Index nicht verändern, aber sie abfragen
157
157
fmt.Printf("%s\n", s)
158
-
158
+
159
159
160
160
Was ist, wenn ein String über mehrere Zeilen verlaufen soll?
161
161
162
162
m := `Hallo
163
163
Welt`
164
-
164
+
165
165
`\`` wird die Zeichen in einem String escapen (d.h. mit `\` dessen Ausführung verhindern).
166
166
167
167
### Fehlermeldungen
@@ -172,7 +172,7 @@ Go besitzt mit `error` einen eigenen Datentyp, um mit Fehlermeldungen umzugehen.
172
172
if err != nil {
173
173
fmt.Print(err)
174
174
}
175
-
175
+
176
176
### Grundeliegende Datenstrukturen
177
177
178
178
Die folgende Grafik enstammt dem Artikel [Datenstrukturen in Go](http://research.swtch.com/godata) (auf englisch) aus [Russ Coxs Blog](http://research.swtch.com/). Wie Du sehen kannst, nutzt Go Abschnitte des Arbeitsspeichers, um Daten zu speichern.
@@ -199,7 +199,7 @@ Wenn Du mehrere Konstanten und Variablen deklarieren oder Pakete importieren mö
199
199
var i int
200
200
var pi float32
201
201
var prefix string
202
-
202
+
203
203
Gruppierter Ansatz.
204
204
205
205
import(
@@ -233,8 +233,8 @@ Go besitzt das Schlüselwort `iota`, um eine Aufzählung zu starten. Der Startwe
233
233
)
234
234
235
235
const v = iota // Sobald iota erneut auf `const` trifft, wird erneut mit `0` gestartet, also gilt v = 0.
236
-
237
-
const (
236
+
237
+
const (
238
238
e, f, g = iota, iota, iota // e, f und g haben den selben Wert 0, da sie in der selben Zeile stehen.
239
239
)
240
240
@@ -261,7 +261,7 @@ wobei in `[n]Datentyp` das `n` die Länge des Arrays angibt. `Datentyp` ist selb
261
261
fmt.Printf("Das erste Element ist %d\n", arr[0]) // Beim Auslesen des Wertes wird 42 zurückgegeben
262
262
fmt.Printf("Das letzte Element ist %d\n", arr[9]) // Es gibt den Standardwert des 10. Elements zurück, was in diesem Fall 0 ist.
263
263
264
-
Da die Länge ein Teil des Array-Typs ist, sind `[3]int` und `[4]int` verschieden, sodass wir die Länge eines Arrays nicht ändern können. Nutzt Du Arrays als Argument in einer Funktion, dann wird eine Kopie des Arrays übergeben, statt einem Zeiger (bzw. ein Verweis) auf das Original. Möchtest Du stattdessen den Zeiger übergeben, dann musst Du einen `slice` verwenden. Darauf gehen wir aber später nochmals ein.
264
+
Da die Länge ein Teil des Array-Typs ist, sind `[3]int` und `[4]int` verschieden, sodass wir die Länge eines Arrays nicht ändern können. Nutzt Du Arrays als Argument in einer Funktion, dann wird eine Kopie des Arrays übergeben, statt einem Zeiger (bzw. ein Verweis) auf das Original. Möchtest Du stattdessen den Zeiger übergeben, dann musst Du einen `slice` verwenden. Darauf gehen wir aber später nochmals ein.
265
265
266
266
Es ist möglich, `:=` zu nutzen, um ein Array zu deklarieren.
267
267
@@ -273,10 +273,10 @@ Vielleicht möchtest Du auch Arrays als Element in einem Array nutzen. Schauen w
273
273
274
274
// Deklariere ein zweidimensionales Array mit zwei Elementen, welche jeweils vier Elemente besitzen.
@@ -308,12 +308,12 @@ Nun deklarieren wir ein `slice` und vergeben Startwerte.
308
308
// 'a' verweist auf die Elemente zwischen Index 3 und 5 im Array ar.
309
309
a = ar[2:5]
310
310
// 'a' besitzt nun die Elemente ar[2],ar[3] und ar[4]
311
-
311
+
312
312
// 'b' ist ein weiterer Ausschnitt (Slice) vom Array ar
313
313
b = ar[3:5]
314
314
// 'b' besitzt nun die Elemente ar[3] und ar[4]
315
315
316
-
Beachte die Unterscheide bei der Deklaration von `slice` und `array`. Wir nutzen `[…]`, um Go die Länge automatisch herausfinden zu lassen, aber nutzen `[]` lediglich zur Deklaration von Slices.
316
+
Beachte die Unterscheide bei der Deklaration von `slice` und `array`. Wir nutzen `[…]`, um Go die Länge automatisch herausfinden zu lassen, aber nutzen `[]` lediglich zur Deklaration von Slices.
317
317
318
318
Ihre zugrundeliegenden Datentypen.
319
319
@@ -325,7 +325,7 @@ Slices haben bestimmte Anwendungsgebiete.
325
325
326
326
- Ein `slice` beginnt mit dem Index 0, `ar[:n]` gleicht `ar[0:n]`.
327
327
- Der zweite Index gibt die Länge vom Slice an, wenn er ausgelassen wird. `ar[n:]` gleicht `ar[n:len(ar)]`.
328
-
- Du kannst auch `ar[:]` nutzen, um einen gesamtes Array zu kopieren, wie in den ersten beiden Punkten erklärt.
328
+
- Du kannst auch `ar[:]` nutzen, um einen gesamtes Array zu kopieren, wie in den ersten beiden Punkten erklärt.
329
329
330
330
Mehr Beispiele zu `slice`
331
331
@@ -383,7 +383,7 @@ Schauen wir uns ein wenig Code an. Die 'set'- und 'get'-Werte in `map` sind der
383
383
// Ein alternativer Weg zum Deklarieren
384
384
nummern := make(map[string]int)
385
385
nummern["eins"] = 1 // Weise ein Wert durch einen Schlüssel zu
386
-
nummern["zehn"] = 10
386
+
nummern["zehn"] = 10
387
387
nummern["drei"] = 3
388
388
389
389
fmt.Println("Die dritte Nummer lautet: ", nummern["drei"]) // Lese den Wert aus
@@ -398,7 +398,7 @@ Einige Anmerkungen zur Nutzung von maps.
398
398
399
399
Du kannst das Schema `Schlüssel:Wert` nutzen, um eine `map` mit Startwerten zu erstellen. `map` hat auch eingebaute Funktionen, um die Existenz eines `key` zu überprüfen.
400
400
401
-
Benutze `delete`, um ein Element in `map` zu löschen.
401
+
Benutze `delete`, um ein Element in `map` zu löschen.
0 commit comments