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与性能无关。