You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.7 KiB
Go

// HASHTABLES
// Hashtables contain key/value pairs
// Key must be unique (Arbitrary, must be hashable by the hash function though)
// Hash function is used to compute a slot for a key
// This goes on behind the scenes when you want to insert
// a value for a particular key.
// There can be collosions in a Hashtable, that occurs when two keys hash to the same
// slot. There are strategies to handle those collisions like putting them in a list and tracking them...
// When you get a collision like this your access and insert are a little slower.
// Allows for access in constant O(1) time. Lists are linear O(N) time for a lookup.
// MAPS
// GOLangs specific implementation of a Hashtable
// can use make function to create a map.
1 year ago
package main
import "fmt"
// map declaration
var myMap map[string]int
1 year ago
func main() {
// Using make
m2 := make(map[string]int)
fmt.Println(m2)
// map literal
m3 := map[string]int{"Drew": 1337, "Margot": 9000}
fmt.Println(m3, len(m3))
fmt.Printf("Margot's power level: %d\n", m3["Margot"])
m3["Laura"] = 100_000 // like python you can use _ to see places
fmt.Println(m3, len(m3))
// delete value from map
delete(m3, "Drew")
fmt.Println(m3, len(m3))
// Two value assignment
// p will be a boolean if the key is in the map
val, p := m3["Margot"]
if p {
fmt.Println("Found key Margot in map with value: ", val)
} else {
fmt.Println("Key Margot not present in map. Got back: ", val)
}
val, p = m3["Drew"]
if p {
fmt.Println("Found key Drew in map with value: ", val)
} else {
fmt.Println("Key Drew not present in map. Got back: ", val)
}
// iterating through a map
for key, value := range m3 {
fmt.Printf("Key: %s, Value: %d\n", key, value)
}
1 year ago
}