Pull to refresh
23
0
Oleksiy Chechel @mirrr

Golang/JS developer

Send message
Да, без примера не разобраться. А что мешает использовать семафоры?
Я не совсем понял мысль про "впиливание" локов и семафоров в рантайм, можете пояснить? И каким образом это влияет на сложность?
Порекомендовать не могу, так-как сам не использую.
Вообще, есть еще варианты, например простой пакет https://github.com/tj/go-gracefully от авторов известного фреймворка express для nodejs
Это тоже правда, все зависит от архитектуры конкретного приложения. Как пример, недавно была задача банального инкремента на нескольких инстансах, решение было тоже банально, инкремент на накопленное значение из каждого инстанса n раз в секунду. Если бы в том же случае осуществлялась прямая запись, нагрузка на базу была бы критичной на существующих мощностях, и думаю даже на значительно больших.
Я просто приведу маленький пример. Новичек в php экспериментирует, с таким выражением:

if ($my_var) { /* .... */ }

Как поведет себя блок, когда в переменной будет true, 1, "1", "", " ", "string", (10 > "11") и т.д?

Тот же новичек попробует все подобные варианты в go. Тут он быстро поймет, что скомпилится только первый. Все остальные выдадут ошибку на этапе компиляции. Потому-что go принимает все прямолинейно, только булевы значения. Вот пару примеров, можно нажать и посмотреть ошибки:

https://play.golang.org/p/t_MDQBvIj1
https://play.golang.org/p/SCumk_DuV9
https://play.golang.org/p/DuGHIcdmIq

Или такой вариант:

if($test) 
    echo "Ok";
    echo "Test passed!";

Gо же вообще не позволяет выполнять if, for и т.д. без фигурных скобочек.
И такой подход практически во всем. Не скажу, что там вообще нет подводных камней, на которые может напороться новичек. Но все гораздо лучше в плане надежности ПО, сужу по реальному опыту применения.
Из коробки нет, но есть множество пакетов, типа https://github.com/facebookgo/grace
И при этом в Go значительно проще организовать кеширование, фильтр Блума, hyperLogLog и многие другие вещи, которые помогают вообще не делать запросы в базу при каждом обращении.
На самом деле, большинство багов отсеется на этапе "оно не компилится, ошибка в строке N", так-как компилятор довольно строгий и вероятность скрытых багов гораздо меньше, чем в php или js. В go сами средства языка практически не дают возможности сделать шаг влево-вправо и, я бы сказал, навязывает единый стиль кода и программирования. Я конечно больше сравниваю с nodejs, с которой работаю последние несколько лет. Но и с php тоже знаком не по наслышке.
Хотя при этом в разделе "Функции PHP > Функции для работы с массивами". Немного сбивает с толку.
Нет, не создает. Это просто разные переменные.
Вполне можно

a, _, b = b, c, a

И ничего запятая не создает, это просто разделитель между разными переменными.
По сути все языки высокого уровня это сахар, все то же можно было написать и на асме.
Прозвучало так, как будто я восхвалял golang. А вы меня осадили.
Множественное присваивание, как и множественные возвращаемые значения из функций это особенность языка, которую стоило описать в статье. Если будет статья, php глазами гофера, то там стоит упомянуть, что в php такого присваивания нет. Но зато есть что-то другое.
Согласен, php уже давно не использовал, подзабыл. Но смысла это не отменяет. Автор хотел показать, что в go можно делать так:

var1, var2, var3 := true, "text", 10

или так:

var1, var2, var3 := myFunc()

Что подставить на второй половине, не имеет значения. Автор использовал для примера смену двух значений. И будь в php коде это list, пример был бы неочевиден.
Не могу согласиться, что только в памяти дело. У меня зачастую время ответа скрипта на golang — микросекунды, миллисекунды — при сколько-либо существенной нагрузке.

Синтетика конечно, но все же
image
Ничего себе, нужно иметь научную степень, наверное, чтобы прописать переменную окружения.
Крестообразной отверткой можно совершать казнь ничуть не хуже.
Это был пример на множественное присваивание, если что. Понятно, что через передачу указателей в функцию можно хоть и десять значений свапнуть.
Я видимо что-то делаю не так, ибо ничего не распухает. Но если бы пытался все делать, как привык в php или C++, то наверное так и выходило бы.

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity