It's not just "too late to change now", it's also proper behavior.
Go code is meant to be concise:
- once a Go developer learned that the above is a copy (which she will learn very early on), she won't ever forget, it's just too fundamental
- to modify the slice, just modify the slice and skip the copy with underscore:
for i, _ := range mySlice { mySlice[i] = "foo" }
There we go. Syntax simplicity (without exotic compiler flags or prep directives) and conciseness fully preserved.