Golang: convert fragments to map

Is there a simple / easy way to convert a slice to a card in the Golang? Similar to converting an array to a hash in perl, it is easy to do with a simple assignment, for example, %hash = @array it converts all the elements into an hash into an array above, with the keys being even-numbered indexed elements, while the values ​​will be odd indexed array elements.

In my Go code, I have fragments of a string and you want to convert it to a map. I am wondering if there is a Go library code for this.

func main() {
  var elements []string
  var elementMap map[string]string
  elements = []string{"abc", "def", "fgi", "adi"}
}

moiety elements should be transformed into a map of rows elementMap.

thank

+4
source share
2 answers

for:

elements = []string{"abc", "def", "fgi", "adi"}
elementMap := make(map[string]string)
for i := 0; i < len(elements); i +=2 {
    elementMap[elements[i]] = elements[i+1]
}

runnable

.

+3

perl-. , . :

func main() {
    var elements []string
    var elementMap map[string]string
    elements = []string{"abc", "def", "fgi", "adi"}

    // initialize map
    elementMap = make(map[string]string)

    // put slice values into map
    for _, s := range elements {  
        elementMap[s] = s
        // or just keys, without values: elementMap[s] = ""
    }

    // print map
    for k := range elementMap {
        fmt.Println(k)
    }
}

, , : , , , , map[string]int:

func main() {
    var elements []string
    var elementMap map[string]int
    elements = []string{"abc", "def", "fgi", "adi", "fgi", "adi"}

    // initialize map
    elementMap = make(map[string]int)

    // increment map value for every key from slice
    for _, s := range elements {  
        elementMap[s]++
    }

    // print map
    for k, v := range elementMap {
        fmt.Println(k, v)
    }
}

func:

func sliceToStrMap(elements []string) map[string]string {
    elementMap := make(map[string]string)
    for _, s := range elements {
        elementMap[s] = s
    }
    return elementMap
}

func sliceToIntMap(elements []string) map[string]int {
    elementMap := make(map[string]int)
    for _, s := range elements {
        elementMap[s]++
    }
    return elementMap
}
+1

Source: https://habr.com/ru/post/1649098/


All Articles