big := make([]byte, 1<<20); small := big[:10]; big = nil?Да, здесь возможна утечка памяти. Переменная small - это подслайс, который ссылается на тот же базовый массив, что и big. Размер этого массива - 1 МБ. После big = nil на массив ссылается только small, но пока эта ссылка жива, сборщик мусора не может освободить весь массив. В памяти остаётся 1 МБ, хотя "нужны" только 10 байт. Решение: скопировать нужную часть в новый слайс: small := make([]byte, 10); copy(small, big[:10]), после чего big можно обнулить.
big := make([]byte, 1<<20)
small := big[:10]
big = nil // массив всё ещё удерживается через small