Suchen nach Wörterbuchelementen (Dictionary-Elementen)
Was passiert, wenn wir in einem Wörterbuch (Dictionary) nach einem Element suchen, das nicht existiert?
package main
import "fmt"
func main() {
m := map[string]int{
"labex": 0,
}
fmt.Print("The value of labs is: ")
fmt.Println(m["labs"])
}
Die Programmausgabe lautet wie folgt:
The value of labs is: 0
Wir haben festgestellt, dass wenn das Element im Wörterbuch (Dictionary) nicht existiert, die Abfrage den Standardwert des Wertetyps zurückgibt.
Was ist mit dem Schlüssel (key) im Wörterbuch, dessen Wert 0
ist?
package main
import "fmt"
func main() {
m := map[string]int{
"labex": 0,
}
fmt.Print("The value of labs is: ")
fmt.Println(m["labs"])
fmt.Print("The value of labex is: ")
fmt.Println(m["labex"])
}
Die Programmausgabe lautet wie folgt:
The value of labs is: 0
The value of labex is: 0
Wir haben festgestellt, dass für ein Wörterbuch (Dictionary) die Darstellung eines nicht existierenden Werts und eines existierenden Werts mit Standardwert gleich ist.
Dies bringt uns in große Verwirrung. Wie können wir das Problem lösen?
Es stellt sich heraus, dass die Entwickler von Go bereits an dieses Problem gedacht haben. Wenn wir ein Element in einem Wörterbuch (Dictionary) abfragen, gibt es ein oder zwei Variablen als Rückgabewerte.
Das heißt:
labs, ok := m["labs"]
Ändern Sie die Datei map.go
wie folgt:
package main
import "fmt"
func main() {
m := map[string]int{
"labex": 0,
}
labs, ok := m["labs"]
fmt.Print("The value of labs is: ")
fmt.Print(labs)
fmt.Print(" Does it exist? ")
fmt.Println(ok)
labex, ok2 := m["labex"]
fmt.Print("The value of labex is: ")
fmt.Print(labex)
fmt.Print(" Does it exist? ")
fmt.Println(ok2)
}
Die Programmausgabe lautet wie folgt:
The value of labs is: 0 Does it exist? false
The value of labex is: 0 Does it exist? true
Jetzt können wir den zweiten Rückgabewert der Abfrage verwenden, um zu bestimmen, ob das zurückgegebene Ergebnis ein existierender Standardwert oder ein nicht existierender Standardwert ist.