Как составить более элегантный алгоритм обхода строки по индексам?

В тексте, при помощи суффиксного массива выделил индексы, в данной момент мой алгоритм обхода выглядит так, уверен,что имеются более элегантные версии при помощи классических алгоритмнов.

str := `Уж небо осенью дышало Уж реже солнышко блистало`
buff := bytes.Buffer{}
buff.WriteString(str)
searchIndex := []byte("Уж")
index := suffixarray.New(buff.Bytes())
offset := index.Lookup(searchIndex, -1)
sort.Ints(offset)
l := len(offset)
sliceOfBytes := make([][]byte, l)
for iter := 0; l > 0; iter++ {
    if l == 1 {
        sliceOfBytes[iter] = buff.Next(offset[len(offset)-1])
        break
    }
    sliceOfBytes[iter] = buff.Next(offset[iter+1] - offset[iter])
    l--
}

for _, s := range sliceOfBytes {
    fmt.Println(string(s))
}
//Уж небо осенью дышало 
//Уж реже солнышко блистало

Ответы (0 шт):