2015-03-03 12:50 GMT+03:00 <
forwo...@gmail.com>:
> Сейчас читал рассматривал примеры из заметки "Кратный пересказ Эффективный
> Go", не понял один из примеров, поясните пожалуйста:
>
> func Sum(a *[3]float) (sum float) {
> for _, v := range a {
> sum += v
> }
> return
> }
>
> array := [...]float{7.0, 8.5, 9.1};
> x := sum(&array); // Обратите внимание на явное взятие адреса массива.
>
> Что значат 3 точки при объявлении и инициализации среза?
Это не срез, а массив. Три точки собственно и позволяют объявить
массив, а не срез. Обычно при создании массива нужно явно указывать
размер: [5]int. Но если мы создаем массив из литерала, то три точки
позволяют автоматически определить размер исходя из литерала - сколько
элементов в литерале, такой и размер массива.