В моём понимании тут ситуация такая: надо не бросать курить, не прерываться, не смягчать последствия, не подменять одно другим, не что-то там ещё. Нужно именно прекратить, перестать. Не пойти наперекор чему-то там (привычке), а вернуться к первоначальному естественному состоянию.
Естественно, какие-то физиологические напоминания о привычке будут, но они будут компенсироваться приятными вещами. Для курильщика — отсутствие кашля по утрам, заметно здоровее цвет кожи, уменьшится одышка, давление и пр.
Другое дело, что многие не хотят бросить курить. Максимум хотят снизить вред от сигарет. Тут мой секретный способ не сработает.
Есть действительно лёгкий способ бросить курить. Он же лёгкий способ бросить пить или же похудеть. Перестать. И всё.
Перестать курить, пить, или переедать. Это гораздо проще, чем кажется до того как попробуешь. На удивление проще.
Для курильщиков у меня есть лайвхак — проходите мимо тригеров курения: курите перед входом в контору? — проходите без остановки, курите после кофе? — сразу после кофе уйти в обратном направлении от курилки.
Как-то так.
Вопрос к автору статьи: можно в двух словах основной посыл. Вроде должно быть полезно, но я мало чего понял.
Скажем, зачем вы добавляете функцию в структуру а потом ещё и меняете сигнатуру, почему не написать отдельную функцию для чего угодно и просто вызывать при необходимости? Функция в структуре не очень смотрится, как по мне.
Вы рекламируете свой пакет вместо стандартного, в чём его преимущество?
Кстати, в Go тоже есть неявное приведение типов. Думаю что в вашем же примере каждый из пользовательских типов получится присвоить переменной базового — int — без явного приведения.
Приведение типов средой исполнения — динамическая типизация. Она может быть сильной или слабой, зависит от внутренней реализации языка. Про слабую типизацию в Go на Гитхабе писал один из разработчиков языка. Ну и логично, Go ведь пошёл от Си, а Си — известный пример языка со статической но слабой типизацией.
Рискну дать совет: не используйте фреймворки в Go. То есть набор полезных пакетов (типа Gorilla) — само собой. А вот всё, что несёт свою идиоматику (вроде Gin), или привносит магию в код — с большой осторожностью.
Даже больше того, на мой взгляд, в Go нет толковых и действительно необходимых фреймворков.
И, кстати, в Go слабая типизация, как и в Си. (Но статическая, да)
Я не увидел сразу, что это перевод м-ра Чейни :) Это многое объясняет, у него уже давно есть какая-то тактика, и он её старается придерживаться. Толковый мужик, безусловно.
Хотя лично мне его взгляды не всегда близки, и понятность кода в Go очень нравится. Пускай даже с вот этими шаблонами для обработки ошибок.
Впрочем, разработчики языка скорее на Вашей с Дейвом стороне, и свою недоработку при выборе метода обработки ошибок они признают. Подождём версии 1.13 или 2.0.
Смысл понятен, статья хорошая.
Вопрос по сути: разве такое вот сокрытие ошибок не идёт в разрез с самой идеей Роба Пайка? Насколько я помню тот его тезис, он как раз говорил о том, что обрабатывать ошибки надо везде обычным образом, трактуя их просто как один из результатов вызова функции. Да и в целом любое сокрытие кода и введение дополнительных конструкций и абстракций как по мне не очень-то «the way to Go». Как считаете?
Естественно, какие-то физиологические напоминания о привычке будут, но они будут компенсироваться приятными вещами. Для курильщика — отсутствие кашля по утрам, заметно здоровее цвет кожи, уменьшится одышка, давление и пр.
Другое дело, что многие не хотят бросить курить. Максимум хотят снизить вред от сигарет. Тут мой секретный способ не сработает.
Перестать курить, пить, или переедать. Это гораздо проще, чем кажется до того как попробуешь. На удивление проще.
Для курильщиков у меня есть лайвхак — проходите мимо тригеров курения: курите перед входом в контору? — проходите без остановки, курите после кофе? — сразу после кофе уйти в обратном направлении от курилки.
Как-то так.
Скажем, зачем вы добавляете функцию в структуру а потом ещё и меняете сигнатуру, почему не написать отдельную функцию для чего угодно и просто вызывать при необходимости? Функция в структуре не очень смотрится, как по мне.
Вы рекламируете свой пакет вместо стандартного, в чём его преимущество?
[3]
[3]
Запускать можно go run — одной командой. Модуль OS имеется.
Для программиста это всё явно не видно и с помощью кода вряд ли можно продемонстрировать.
В Go слабая статическая типизация. В Python типизация динамическая (слабая или сильная — не знаю).
Даже больше того, на мой взгляд, в Go нет толковых и действительно необходимых фреймворков.
И, кстати, в Go слабая типизация, как и в Си. (Но статическая, да)
Хотя лично мне его взгляды не всегда близки, и понятность кода в Go очень нравится. Пускай даже с вот этими шаблонами для обработки ошибок.
Впрочем, разработчики языка скорее на Вашей с Дейвом стороне, и свою недоработку при выборе метода обработки ошибок они признают. Подождём версии 1.13 или 2.0.
Вопрос по сути: разве такое вот сокрытие ошибок не идёт в разрез с самой идеей Роба Пайка? Насколько я помню тот его тезис, он как раз говорил о том, что обрабатывать ошибки надо везде обычным образом, трактуя их просто как один из результатов вызова функции. Да и в целом любое сокрытие кода и введение дополнительных конструкций и абстракций как по мне не очень-то «the way to Go». Как считаете?