Re: [golang-ru] Синтаксис объявления среза

69 views
Skip to first unread message

Dmitry Vyukov

unread,
Mar 3, 2015, 4:54:13 AM3/3/15
to gola...@googlegroups.com
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. Но если мы создаем массив из литерала, то три точки
позволяют автоматически определить размер исходя из литерала - сколько
элементов в литерале, такой и размер массива.
Reply all
Reply to author
Forward
0 new messages