将所有项目从片段(src)复制到新片段(dst)后,dst中的所有项目都指向src的最后一项。golang范围复制后,所有项目指向src片段的最后一项
package main
import (
"fmt"
)
func main() {
src := []string{"a", "b", "c"}
dst := []*string{}
for _, val := range src {
dst = append(dst, &val)
}
for i, s := range dst {
fmt.Printf("%v - %v\n", i, *s)
}
}
>>> 0 - c
>>> 1 - c
>>> 2 - c
为什么“a”和“b”没有复制到dst slice中?
我不会将其标记为重复的,因为你已经得到了一些很好的答案,但见:https://golang.org/ DOC/FAQ#closures_and_goroutines – JimB