a := make([]int, 2, 4); b := append(a, 1); _ = append(a, 2); fmt.Println(b[2])?Оба вызова append(a, 1) и append(a, 2) работают с одним и тем же базовым массивом (ёмкость 4, хватает). Первый append записывает 1 в позицию с индексом 2 и возвращает слайс b. Второй append снова использует тот же массив и записывает 2 в ту же позицию [2], перезаписывая 1. В итоге b[2] равно 2. Это классическая ловушка разделяемой ёмкости.
a := make([]int, 2, 4)
b := append(a, 1)
_ = append(a, 2)
fmt.Println(b[2]) // 2