Tuesday, April 9, 2019

Will you friendship with maps?

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. 

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.

No comments:

Post a Comment

Do you support us?

Business address
0x1D24D8f27ea73ff604C7685246bdC6ae55bddaEF

Founders vision and opporbium

  He yearned for progress, not paralysis, knowing that a life of seclusion would suffocate his aspirations... The dawn of a new era depends ...

Achieves