我正在做这种数组复制来映射
package main
import (
"fmt"
)
type Test struct {
Id int
Name string
}
func main() {
tlist := []Test{
Test{1, "mike"},
Test{2, "clara"},
Test{3, "stefan"},
}
tmap := make(map[int]*Test)
// copy to map here
for _, t := range tlist {
tmap[t.Id] = &t
fmt.Printf("list to map %v\n", tmap[t.Id])
}
// debug
for _, t := range tmap {
t.Name = t.Name + "A"
fmt.Printf("%v\n", t)
}
for _, t := range tlist {
fmt.Printf("list after %v\n", t)
}
}
结果输出是地图只包含所有地图项中的最后一个数组项。
list to map &{1 mike}
list to map &{2 clara}
list to map &{3 stefan}
&{3 stefanA}
&{3 stefanAA}
&{3 stefanAAA}
list after {1 mike}
list after {2 clara}
list after {3 stefan}
为什么在第一个循环中正确打印每个地图元素后打印地图时地图只包含最后一个数组的项目?
婷婷同学_
相关分类