It's different from C++ references. In Go, it's an actual copy of the value, not a reference to the original element in the slice.
When you iterate over a slice with range in Go, the variable v is reused for each iteration - it's not creating N separate variables.