String 从GO映射中附加关键数据

String 从GO映射中附加关键数据,string,dictionary,go,String,Dictionary,Go,我在围棋中有一张地图,类型如下: var userinputmap = make(map[string]string) 其中的值如下所示: userinputmap["key1"] = value1 userinputmap["key2"] = value2 userinputmap["key3"] = value3 如何生成包含上述所有逗号分隔格式键的字符串 output:= "key1,key2,key3"

我在围棋中有一张地图,类型如下:

var userinputmap = make(map[string]string)
其中的值如下所示:

userinputmap["key1"] = value1
userinputmap["key2"] = value2
userinputmap["key3"] = value3
如何生成包含上述所有逗号分隔格式键的字符串

output:= "key1,key2,key3"

在循环中迭代并将键附加到字符串:

package main

import "fmt"

func main() {
    var userinputmap = make(map[string]string)

    userinputmap["key1"] = "value1"
    userinputmap["key2"] = "value2"
    userinputmap["key3"] = "value3"
    output :=""
    for key,_ := range userinputmap {
    output +=(key+",")
    }
    output = output[:len(output)-1]
    fmt.Println(output)
}

在循环中迭代并将键附加到字符串:

package main

import "fmt"

func main() {
    var userinputmap = make(map[string]string)

    userinputmap["key1"] = "value1"
    userinputmap["key2"] = "value2"
    userinputmap["key3"] = "value3"
    output :=""
    for key,_ := range userinputmap {
    output +=(key+",")
    }
    output = output[:len(output)-1]
    fmt.Println(output)
}

另一种选择是将所有键收集到一个片段中,然后使用
字符串。Join
方法将它们连接起来

package main

import "fmt"
import "strings"

func main() {
    var userinputmap = make(map[string]string)

    userinputmap["key1"] = "value1"
    userinputmap["key2"] = "value2"
    userinputmap["key3"] = "value3"

    keys := []string {}

    for k, _ := range userinputmap {
        keys = append(keys, k)
    }

    keys_string := strings.Join(keys, ",")

    fmt.Println(keys_string)
}

另一种选择是将所有键收集到一个片段中,然后使用
字符串。Join
方法将它们连接起来

package main

import "fmt"
import "strings"

func main() {
    var userinputmap = make(map[string]string)

    userinputmap["key1"] = "value1"
    userinputmap["key2"] = "value2"
    userinputmap["key3"] = "value3"

    keys := []string {}

    for k, _ := range userinputmap {
        keys = append(keys, k)
    }

    keys_string := strings.Join(keys, ",")

    fmt.Println(keys_string)
}

谢谢:)行得通。顺便问一下:output=output[:len(output)-1]的意义是什么?@pronesssss,它去掉了尾随逗号,如果没有它,输出将是:
key2,key3,key1,
。谢谢:)这样就行了。顺便问一下:output=output[:len(output)-1]的意义是什么?@pronesssss,它去掉了尾随逗号,没有它,输出将是:
key2,key3,key1,
。一个简单的优化不是附加键,而是
键:=make([]字符串,len(userinputmap))
只需使用索引对其进行迭代,并将值分配给位置即可。这就避免了每次都要用动态增长的片重新分配新的内存空间。@WillC,是的,预分配内存的速度快了一点,但我认为没有太大的区别。两种方法的摊销时间仍然是
O(n)
。另外,请注意,接受的答案是,每次添加新元素时,将副本变成字符串,从而导致
O(n*n)
时间复杂性。我认为OP并不关心性能。与其添加键,一个简单的优化方法是
键:=make([]string,len(userinputmap))
并使用索引对其进行迭代,然后将值分配给位置。这就避免了每次都要用动态增长的片重新分配新的内存空间。@WillC,是的,预分配内存的速度快了一点,但我认为没有太大的区别。两种方法的摊销时间仍然是
O(n)
。另外,请注意,接受的答案是,每次添加新元素时,将副本变成字符串,从而导致
O(n*n)
时间复杂性。我认为OP与性能无关。