OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 16 Апрель, 2024 09:19

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Срезы как в голанге?
СообщениеДобавлено: Воскресенье, 05 Май, 2019 11:47 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Что конкретно не работает то?

https://play.golang.org/p/jKdBOpSGwlM

Я что-то не то изобразил?

Цитата:
Окончательный вариант вообще вот, такой


Этот код вообще какой-то неадекватный. Я не понимаю что ты изобразить пытаешься )


Срезы в Go - это по сути List из C#. Ну или массив в почти любом скриптовом языке. Т.е. обычный динамический массив с доп плюшками.
Разница только в том, что пересоздание массива в Go явное.
Потому в 99% случаев присваивание x = append(y, z) будет некорректным, т.к. append пересоздает (создает новый) срез. Это тебя видимо и запутало.
Правильный код: x = append(x, z)
Проще всего запомнить что это аналог x = x + z. Очевидно что это не то же самое что x = y + z

ps Рекомендую хотя бы раз посмотреть в официальную документацию или книгу: https://tour.golang.org/moretypes/15

Цитата:
The resulting value of append is a slice containing all the elements of the original slice plus the provided values.

If the backing array of s is too small to fit all the given values a bigger array will be allocated. The returned slice will point to the newly allocated array.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Срезы как в голанге?
СообщениеДобавлено: Воскресенье, 05 Май, 2019 12:15 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
ilovb писал(а):
Этот код вообще какой-то неадекватный. Я не понимаю что ты изобразить пытаешься )

Просто добавить элемент к массиву :roll: Так адекватнее?
Код:
func process_line(row IP2LocRec) {
   if cInfo, ok := countries[row.CCode]; !ok {
      countries[row.CCode] = IpDbCountry{CName: row.CName,
         IpRanges: []IpDbRange{IpDbRange{IpLo: row.IpLo, IpHi: row.IpHi}}}
   } else {
      cInfo.IpRanges = append(
         cInfo.IpRanges, IpDbRange{IpLo: row.IpLo, IpHi: row.IpHi})
      countries[row.CCode] = cInfo
   }
}
Какой вы адекватный товарищ, аж тошно :mrgreen:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Срезы как в голанге?
СообщениеДобавлено: Воскресенье, 05 Май, 2019 12:24 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Вот это уже более похоже на вменяемый код.

Цитата:
Какой вы адекватный товарищ, аж тошно


Ну пардонте

ps Не вы, а ты
pps Пройдет время и сам будешь диву даваться какую хрень люди на Go пишут по незнанию. Смотришь в код и нихрена понять не можешь чего хотели вообще )
Я тоже потупил на append когда начинал изучать Go. Это нормально. Главное воздерживаться от громких обвинений в адрес языка пока крепко не убедишься что тупишь не ты )))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Срезы как в голанге?
СообщениеДобавлено: Воскресенье, 05 Май, 2019 12:59 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
ilovb писал(а):
pps Пройдет время и сам будешь диву даваться какую хрень люди на Go пишут по незнанию. Смотришь в код и нихрена понять не можешь чего хотели вообще )
Я тоже потупил на append когда начинал изучать Go. Это нормально. Главное воздерживаться от громких обвинений в адрес языка пока крепко не убедишься что тупишь не ты )))
Главная проблема в большинстве новых языков, когда разработчику дают больше свободы сделать какую-то вещь кучей разных способов. И многих почему-то привлекают самые запутанные и плохо читаемые способы. А так да, Go вполне неплох :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Срезы как в голанге?
СообщениеДобавлено: Воскресенье, 05 Май, 2019 13:53 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Ну да, некоторая избыточная сложность в Go присутствует. Я бы предпочел чтоб он чуток проще был, чтобы меньше нюансов нужно было держать в голове.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Срезы как в голанге?
СообщениеДобавлено: Воскресенье, 05 Май, 2019 20:04 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
ilovb писал(а):
Ну да, некоторая избыточная сложность в Go присутствует.
Некоторая?

Диспут доказывает, что создатели Го -- типичные рукосуи, просто один из них подсмотрел, как должно быть, и по памяти они нарукосуйствовали.

Goано.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Срезы как в голанге?
СообщениеДобавлено: Воскресенье, 05 Май, 2019 20:25 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Go судя по всему лучший язык современности. Его одинаково ненавидят как мейнстримщики, так и оберонщики :D

ps Лично у меня есть куча претензий к Go, но эти претензии в корне не совпадают с местными.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Срезы как в голанге?
СообщениеДобавлено: Воскресенье, 05 Май, 2019 22:16 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
ilovb писал(а):
Его одинаково ненавидят как мейнстримщики, так и оберонщики :D
Просто между двумя категориями [s]интеллектуальный[/s] концептуальный разрыв слишком велик, а Goано впихнулось где-то посередине -- уйдя из мейнстрима, но так и не добравшись до Ультра Паскаля.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB