Maps is a collection of keys and values. [K] represent keys, all the keys have same type V represent values. Just like keys, all values have same types, but both keys and values are not comparable. You can compare keys with other keys.
make(maps[K]V) you can create maps like this.
ages := make(maps[string]int)
ages["ali"] = 24
If key doesn't found in a maps then it return zero value. You can applied any operation such as
ages["ali"]++
ages["ali"]+= 1
You can delete maps using built-in function delete. If a key doesn't found and you store value then it return panic error.
make([]string, 0, len(names)):
return a new string slice having 3 size capacity.
append():
go provide append function which takes two parameter one slice-array and other is value. name is already a slice-array and empty array.
"_" :
blank identifier is used because I omit "i"
In this example slice-array copy one by one element into another array.
Slices and Maps values are interchangeable:
Sometimes we want to check particular key values is either zero or present.
make(maps[K]V) you can create maps like this.
ages := make(maps[string]int)
ages["ali"] = 24
If key doesn't found in a maps then it return zero value. You can applied any operation such as
ages["ali"]++
ages["ali"]+= 1
You can delete maps using built-in function delete. If a key doesn't found and you store value then it return panic error.
package main | |
import ( | |
"fmt" | |
) | |
func main() { | |
//slices | |
names := [...]string{"ali","haider","johny"} | |
name := make([]string, 0, len(names)) | |
for _ , v := range names{ | |
name = append(name, v) | |
fmt.Println(name) | |
} | |
} |
make([]string, 0, len(names)):
return a new string slice having 3 size capacity.
append():
go provide append function which takes two parameter one slice-array and other is value. name is already a slice-array and empty array.
"_" :
blank identifier is used because I omit "i"
In this example slice-array copy one by one element into another array.
Slices and Maps values are interchangeable:
package main | |
import ( | |
"fmt" | |
) | |
func main() { | |
//slices to maps | |
names := [...]string{"ali","haider","johny"} | |
person := make(map[string]int) | |
for _, v := range names{ | |
person[v] = 24 | |
fmt.Println(person) | |
} | |
} |
Sometimes we want to check particular key values is either zero or present.
package main | |
import ( | |
"fmt" | |
) | |
func main() { | |
//slices to maps | |
person := make(map[string]int) | |
person["ali"] = 24 | |
person["haider"] =23 | |
if details , ok := person["haider"]; ok{ | |
fmt.Println(ok) | |
} | |
}
if details , ok := person["haider"]; ok:
ok return bool value. details contain haider age and ok
contain true. This condition tells us that haider is a
valid key
Warning:
Always remember comparable two maps must be slice, otherwise
comparison is possible.
var m = make(map[string]int)
func k(list []string) string { return fmt.Sprintf("%q", list)} func Add(list []string) { m[k(list)]++ } func Count(list []string) int { return m[k(list)] } Maps are not variables, so you don't it's address Composite Maps: You can create composite maps make(maps[string]maps[string]bool) gopl.io/ch4/graph var graph = make(map[string]map[string]bool) func addEdge(from, to string) { edges := graph[from] if edges == nil { edges = make(map[string]bool) graph[from] = edges } edges[to] = true } func hasEdge(from, to string) bool { return graph[from][to] } This is the best composite example which Go Programming Book. Now you can understand maps in deep. |
Comments
Post a Comment