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

Advocatus diaboli acts behind the veil

  This ancient game of elements, this base world! The frustration of the longings of the great Empyrean’s dwellers. #devil #characterdevelop...

Achieves