> -- ilovb писал(а):
> Если да, то не работает по той причине, что это кривой код.append нужно присваивать тому же слайсу.т.е. так:Криво. Тем не менее в некоторых советах наstackoverflowпризывают именно ничего не присваивать слайсу, а делать всякий раз его пересоздание черезmake. Тиражируют повсюду заветную чудо-функцию, которая всё это делаетНо прикол в том, что оно не работает и так как вы предлагаете тоже!
Нужно переприсваивать всю структуру в словаре, как заметилComdiv, так как у нас тут всё статическое.
Окончательный вариант вообще вот, такой. И без каких-либо пересозданий.## Код:
```
if cInfo, ok := countries[row.CCode]; !ok {
      countries[row.CCode] = IpDbCountry{CName: row.CName,
         IpRanges: []IpDbRange{IpDbRange{IpLo: row.IpLo, IpHi: row.IpHi}}}
   } else {
      countries[row.CCode] = IpDbCountry{CName: row.CName,
         IpRanges: append(
            cInfo.IpRanges, IpDbRange{IpLo: row.IpLo, IpHi: row.IpHi})}
   }
```
Если в конце каждого такого вызова вывести len и cap слайса видно, что при каждой необходимости его увеличения capacity удваивается, всё как в аптеке.