Мне просто интересно, почему, по-видимому, невозможно полностью восстановить измененный размер фрагмента.
package main
import (
"fmt"
)
func main() {
s := []int{1, 2, 3, 4, 5}
fmt.Printf("len=%d cap=%d slice=%v\n", len(s), cap(s), s)
fmt.Println("address of 0th element:", &s[0])
s = s[1:4]
fmt.Printf("len=%d cap=%d slice=%v\n", len(s), cap(s), s)
fmt.Println("address of 0th element:", &s[0])
// extend behind only ...
s = s[:4]
fmt.Printf("len=%d cap=%d slice=%v\n", len(s), cap(s), s)
fmt.Println("address of 0th element:", &s[0])
}
https://play.golang.org/p/4Hwq9yfHeRR
Итак, чтобы снова получить первый элемент (1). Это может быть полезно в некоторых случаях. Я прочитал https://blog.golang.org/slices ... но я не понимаю, почему они так поступили. Хранить начальную позицию и 0-й элемент массива «звучит просто».
У меня такое ощущение, что я что-то не правильно понимаю или что я что-то упустил.