У меня есть тестовый код, который просто удалить даже номера из Int среза:странного поведения выражения диапазона golang
package main
import "fmt"
func main() {
a := []int{0, 1, 2, 3}
for i, v := range a {
fmt.Printf("i: %d v: %d\n", i, v)
fmt.Println("before", a)
if v%2 == 0 {
// delete a[i]
a = append(a[:i], a[i+1:]...)
}
fmt.Println("after", a, "\n")
}
fmt.Println("final", a)
}
Выхода есть:
i: 0 v: 0
before [0 1 2 3]
after [1 2 3]
i: 1 v: 2
before [1 2 3]
after [1 3]
i: 2 v: 3
before [1 3]
after [1 3]
i: 3 v: 3
before [1 3]
after [1 3]
final [1 3]
Вы также можете найти его здесь http://play.golang.org/p/BFPxekBggS. Мой вопрос в том, почему переменная v
оценивается в 3 в последних двух итерациях? Заранее спасибо.
легко понять, спасибо – mawenbao