С сохранением порядка: s = append(s[:i], s[i+1:]...) — сдвигает элементы, O(n). Без сохранения порядка: s[i] = s[len(s)-1]; s = s[:len(s)-1] — O(1), свапаешь с последним и обрезаешь.
С Go 1.21 есть slices.Delete(s, i, j). Важно: при удалении по указателю — обнули удалённый элемент, чтобы GC мог собрать: s[len(s)-1] = nil (для слайсов указателей).
Удаление в цикле — итерируй с конца, иначе пропустишь элементы.