С указателями программа не работает
Написал фукцию поиска анаграм, без указателей она идельно работает. Как только добавляю указатели, то работать перестает. Что не так делаю?
func main() {
values := new([]string)
*values = append(*values, "зерно", "резон", "розен", "кишлак", "навязка", "шкалик", "ВОКАЛИСТ", "листовка", "ластовки", "погода", "вязанка")
for key, value := range *makeAnagramSets(values) {
fmt.Println(key, value)
}
}
func makeAnagramSets(values *[]string) *map[string]*[]string {
mp := make(map[string]*[]string)
mp["start"] = nil
addToMap(values, mp)
return &mp
}
func addToMap(values *[]string, oldMap map[string]*[]string) *map[string]*[]string {
for i := 0; i < len(*values); i++ {
for j := i + 1; j < len(*values); j++ {
// не выходит из цикла. в цикле проверяет values[1], values[2] с values[0](работает только с одним множеством/ключом)
// и дальше не идет
if isAnagram((*values)[i], (*values)[j]) && (*values)[i] != (*values)[j] {
*values = append(*values, (*values)[j])
oldMap[(*values)[i]] = values
}
}
}
keys := make([]string, 0)
for key := range oldMap {
keys = append(keys, key)
}
oldMap = deletExtras(keys, oldMap)
return &oldMap
}
func deletExtras(keys []string, mp map[string]*[]string) map[string]*[]string {
for i := 0; i < len(keys); i++ {
for j := i + 1; j < len(keys); j++ {
if isAnagram(keys[i], keys[j]) {
delete(mp, keys[j])
}
}
}
delete(mp, "start")
return mp
}