go / intermediate
Snippet
Structs als vergleichbare Map-Schlüssel verwenden
In Go können Maps Struct-Typen als Schlüssel verwenden, solange alle Felder im Struct vergleichbar sind. Einfache Typen wie Integer, Strings und Booleans sind vergleichbar, wodurch Structs mit diesen Typen für Lookups mit mehreren Schlüsseln verwendet werden können.
snippet.go
go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package mainimport "fmt"type Point struct {X, Y int}func main() {grid := make(map[Point]string)grid[Point{X: 1, Y: 2}] = "Starting Point"grid[Point{X: 3, Y: 4}] = "Destination"search := Point{X: 1, Y: 2}val, exists := grid[search]fmt.Printf("Found: %v, Exists: %v\n", val, exists)}
Erklärung
1
type Point struct {
Definiert ein Point-Struct mit zwei vergleichbaren Integer-Feldern.
2
grid := make(map[Point]string)
Erstellt eine Map, bei der der Schlüssel ein Point-Struct und der Wert ein String ist.
3
grid[Point{X: 1, Y: 2}] = "Starting Point"
Fügt einen Eintrag hinzu und verwendet dabei ein Struct-Literal direkt als Map-Schlüssel.
4
val, exists := grid[search]
Sucht den Wert mithilfe einer passenden Struct-Instanz.