將所有項目從片段(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