下面这段代码输出什么?

package main

import "fmt"

func main() {
    var a = []int{1, 2, 3, 4, 5}
    var r [5]int

    for i, v := range a {
        if i == 0 {
            a[1] = 12
            a[2] = 13
        }
        r[i] = v
    }
    fmt.Println("r = ", r)
    fmt.Println("a = ", a)
}
r =  [1 12 13 4 5]
a =  [1 12 13 4 5]

Go在线运行

遍历的虽然是a的副本,但是在不发生扩容的情况下,副本和a指向的都是同一个底层数组,因此可以修改到a的内容