Подслайс длины 1 и три варианта append

Что выведетMiddleбесплатно02-t016

Из слайса берут подслайс длины 1. Три варианта: (1) меняют элемент подслайса; (2) аппендят один элемент и меняют элемент результата; (3) аппендят два элемента и меняют элемент результата. Что выведет исходный слайс в каждом случае?

main.gogo
1func caseOne() {2	base := []string{"x", "y", "z"}3	sub := base[1:2]4	sub[0] = "Q"5	fmt.Printf("%s\n", base)6}7 8func caseTwo() {9	base := []byte{'x', 'y', 'z'}10	sub := base[1:2]11	grown := append(sub, 'w')12	grown[0] = 'Q'13	fmt.Printf("%s\n", base)14}15 16func caseThree() {17	base := []byte{'x', 'y', 'z'}18	sub := base[1:2]19	grown := append(sub, 'w', 'v')20	grown[0] = 'Q'21	fmt.Printf("%s\n", base)22}23 24func main() {25	caseOne()26	caseTwo()27	caseThree()28}
Чем закончится программа?
Сначала подумай без запуска — на собесе компилятора не будет.