
if data,ok := data.(map[int]string);ok { s := make([]string,len(data)) count := 0 fmt.Println("this is map[int][]string:-->",data) for _,v := range data { fmt.Println("this is v:-->",v) s[count] = v fmt.Println("this is s:-->",s) } } 这是一部分的代码 主要是将 map 转成 string 数组,但是结果如下:
this is map[int][]string:--> map[2:32||159_tea222r||0||0 9:32||159_tea2222332r||0||0 19:32||159_tea22345762r||0||0] this is v:--> 32||159_tea22345762r||0||0 this is s:--> [32||159_tea22345762r||0||0 ] this is v:--> 32||159_tea2222332r||0||0 this is s:--> [32||159_tea2222332r||0||0 ] this is v:--> 32||159_tea222r||0||0 this is s:--> [32||159_tea222r||0||0 ] 赋值不了给 s 只有一个可以赋值
如果我是连接成一个字符串就可以 这个 data 是我经过对比 delete 之后得出来的
1 znood 2020-02-08 19:27:01 +08:00 楼主不妨每次用完 count 给人家 +1 个鸡腿呢 |
2 mocos 2020-02-08 19:27:52 +08:00 for-range 时 v 是复制切片的的值,然而 v 的指针地址是没变的。所以迭代完成的时候,因为读取的 v 的指针,v 的地址被写入,装入的值也是最后迭代的值 |
3 xsephiroth 2020-02-08 19:39:46 +08:00 via iPhone 能取个 idx 或者 count++吗,自己的代码稍微看看吧 |
4 stevenbipt 2020-02-08 19:59:41 +08:00 count 值一直没变吧??? |
5 SingeeKing PRO if data,ok := data.(map[int]string);ok { s := make([]string,len(data)) fmt.Println("this is map[int][]string:-->",data) for i,v := range data { fmt.Println("this is v:-->",v) s[i] = v fmt.Println("this s s:-->",s) } } |
6 fantastM 2020-02-08 21:22:49 +08:00 count++ 正解,不过也可以这样 ```go data := map[int]string{ 1: "one", 2: "tow", 3: "three", } var s []string for _, val := range data { s = append(s, val) } ``` |
7 gamexg 2020-02-08 21:35:15 +08:00 我习惯这样: ``` go if data,ok := data.(map[int]string);ok { s := make([]string,0,len(data)) for _,v := range data { s=append(s,v) } } ``` |
8 hcyg OP count++ 我漏加上去 我代码里面是又 count++的 |
9 petelin 2020-02-08 23:03:47 +08:00 via iPhone 这是 string |
10 index90 2020-02-09 12:16:43 +08:00 via iPhone Make 的时候你只设了容量,没有设长度 |
11 ikw 2020-02-09 12:17:42 +08:00 via iPhone |