Maks
Либо на ПХП есть какие то большие наработки со сложной логикой, который работает быстро, корректно и так далее. А на го нужно реализовать быстрые операции какие то, или еще что то
V
> на ПХП > большие наработки частое явление > на ПХП > со сложной логикой реже > на ПХП > который работает быстро, корректно исчезающе мало
V
> на го нужно реализовать быстрые операции какие то если домен вытащили в микросервис - то это уже хорошо, там не за скоростью гонятся а так основной буст который может дать го - это асинхронные операции в стейтфул процессе
Vyacheslav
спасибо за ответы:)
V
спасибо за ответы:)
надеюсь тебе не придёт в голову учить пхп
Bagasl
ну копируется твой экземпляр Queue
А почему если я делаю append при передаче слайса по значению - ничего не меняется, но если я изменяю значение элемента слайса - изменения видны в вызывающей функции? Внутри слайса же лежит указатель на массив с данными. Capacity я выделил достаточно, соответственно, при append не должна реаллоцироваться память и он должен дописать число в старый массив слайса. Однако ничего не происходит. Не могу понять, что я упускаю
Bagasl
А, кажись понял Параметр len хэдера слайса то я не меняю. Соответсвенно в консоль выводится только 1 элемент. Скорее всего если залезть в uintptr и проитерироваться как в Си по элементам - я увижу изменения
Илья
Всем привет, я новичок в Go, можете посоветовать ресурсы для начала обучения
Vyacheslav
надеюсь тебе не придёт в голову учить пхп
пхп навряд ли, конечно. я девопсер вообще и вот подумываю углубиться в голанг (именно в конкретную разработку, а не в девопс с голангом), но параллельно что-то поглядывать, когда кончаюся моральные силы на пару дней в дополнение к нему, мб питон вообще взять, тупо с целью расширить функциональность в потных местах
V
Всем привет, я новичок в Go, можете посоветовать ресурсы для начала обучения
https://golang.org/ref/spec https://tour.golang.org https://golang.org/doc/code https://golang.org/doc/effective_go
Che
Понять бы ещё зачем прослойка в виде кафки
Потому что вставка по одной записи в кх не эффективна, накапливает и батчами по 1000 запихивает
Vyacheslav
я думал девопс в основном на питоне
да, в основном на питоне, но есть команды или отдельные ребята которые пилят всё на голанге. да и большинство приблуд для девопса написана на го один бинарь залил и вуаля. да и шустрее в целом
Alexander
ну я про это говорил, только падение сервера
Vyacheslav
а цель этой прокачки скилов?
двинуть в веб на го, если не будет слишком противно
Che
ну а в сервисе накапливать эти батчи и сливать нельзя?
Гемор, гарантии доставки и прочее, зачем если нужно просто плюнуть данные. Все возможно, но Кафка сама может писать в клик и можно таблицу с движком Кафки сделать. Короче удобно ничего больше.
V
да с чего гемор то?
с гарантии сохранности данных
Alexander
какие гарантии доставки? перепробуй, если не удалось записать по каким-то сетевым причинам
Alexander
с гарантии сохранности данных
про это я писал уже 30 раз
V
напиши 31й
Che
Да и если сервис не один а много и все логи пишут (а так скорее всего иначе зачем клик), то батч сформируется по быстрее.
Che
Тогда это критическая ошибка сервиса) обычно брокеры в кластере и высокой доступности, они для этого и придуманы
Che
Что бы всегда быть доступными. А если диск откажет или сеть на сервисе упадёт, писать в файл и завершаться наверно
Anonymous
у меня переменная равна результату работы ф-ции когда я отправляю юзеру результат, то ему приходит адрес результата, а не значение
Anonymous
как передать значение?
Bagasl
Вроде бы
Bagasl
как передать значение?
сохранить результат выполнения функции в переменную, разыменовать её, отдать юзеру
V
как передать значение?
pointer := function() value := *pointer если я правильно понял вопрос
Bagasl
pointer := function() value := *pointer если я правильно понял вопрос
Сейчас проверил - оказывается необязательно сохранять в переменную, так тоже покатит: return *f()
/slvscm
Да, всё так
а что за иде, если не секрет?
Alexander
статей много, найти не трудно
Alexander
ну ты сам спросил недавно
Bagasl
ну ты сам спросил недавно
Ну по той теме еще остался вопрос. Как лучше писать подобные методы? 1. Через ресивер-указатель 2. Через ресивер-значение 1 - указатель по сути бессмысленнен, потому что даже при передаче по значению изменение затрагивает исходный слайс, а лишние скобки и разменования для изменения значения городить приходится: (*q)[0] = v 2 - Передача по значению запутывает читающего код, так как предполагает то, что исходная структура не будет затронута при выполнении функции, но не нужно выплясывать с разыменовкой излишней
Emil
А там не нужны скобки, го вроде должен понять, что ты не к указателю так обращаешься (Или я ошибаюсь?)
Alexander
По сути при конкурентной записи в исходном слайсе может быть заменен массив, а в копии будет указатель на старый, или я не прав?
так это надо решать на уровне конкурентности. дата рейс сам по себе уже неправильная штука
🅞leksiy
так это надо решать на уровне конкурентности. дата рейс сам по себе уже неправильная штука
Ну это да, если с пониманием этого факта проектировать. Но если менять по значению, то это уже не так
Alexander
если ты меняешь поля структуры, а оно по значению. то в чем вообще смысл менять?
Alexander
ну то есть технически понятно что происходит. но зачем вообще так делать?
Alexander
ну не суть что слайс
Alexander
если бы это запрещало менять значение: не компилировалось бы, то ок
🅞leksiy
ну не суть что слайс
В слайсе указатель на массив, ты записываешь и данные как бы пишутся, в отличии от структуры, в этом суть
Alexander
да блин
🅞leksiy
Но где гарантия
Alexander
я не первый день на гоу пишу, не суть, что слайс
🅞leksiy
Мне все же кажется лучше работать с указателем
Alexander
сколько раз писал методы типа правильно, по значению передавай объект, потом оказывалось, что все-таки что-то менять внутри надо, но указатель я поставить забыл
Alexander
и потом напарываюсь
Alexander
я уже забил на эти методы по значению просто)
Alexander
вот переубедите
🅞leksiy
Ну мы об одном же говорим, я тоже так думаю
Alexander
по производительности, на сколько понимаю это не ударяет
Emil
по производительности, на сколько понимаю это не ударяет
Указатель легче тоскать вроде, чем делать копии
Bagasl
ну то есть технически понятно что происходит. но зачем вообще так делать?
Если правильно понял вопрос - меня как раз подбешивает расстановка скобок и звездочек при работе с мапой/слайсом при ресивере - указателе
Alexander
у меня есть подозрение, что это на уровне синтаксического сахара работает
🅞leksiy
Ну там только с gc ньюанс
Alexander
ммм?
Emil
Указатель и не даёт ошибиться с отсутствием изменений полей, и его тоскать легче, чем копии Победа по всем фронтам
Bagasl
я уже забил на эти методы по значению просто)
Я сам склоняюсь к этому, но когда то читал, что идиоматично как раз использовать ресиверы по значению если мы не меняем исходные данные. А так чисто с точки зрения производительности хочется использовать ресивер-указатель для структур на 100500 полей
Alexey
Всем привет. Поставьте звезду, если не жалко: https://github.com/GarryGaller/go-www