Skip to content

Instantly share code, notes, and snippets.

@AleksandarMuradyan
Forked from cevaris/struct_as_map_key.go
Created June 28, 2021 14:56
Show Gist options
  • Save AleksandarMuradyan/1c2433547f32e3ac9308427908290a2c to your computer and use it in GitHub Desktop.
Save AleksandarMuradyan/1c2433547f32e3ac9308427908290a2c to your computer and use it in GitHub Desktop.
Golang: Using structs as key for Maps
package main
import "fmt"
type A struct {
a, b int
}
func MapStructValAsKey(){
// Notice: We are using value of `A`, not `*A`
m1 := make(map[A]string)
a1 := &A{0, 1}
m1[*a1] = "01"
a2 := &A{0, 1}
// Succeeds because map is hashing with
// the `struct` value
_, lookSucceed := m1[*a2]
fmt.Println(m1, lookSucceed)
}
func MapStructPointerAsKey(){
// Notice: We are using pointer of `*A`, not `A`
m1 := make(map[*A]string)
a1 := &A{0, 1}
m1[a1] = "01"
a2 := &A{0, 1}
// Fails because map is hashing with
// the `struct` memory address
_, lookSucceed := m1[a2]
fmt.Println(m1, lookSucceed)
}
func main() {
MapStructValAsKey()
MapStructPointerAsKey()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment