До сих пор я был тихим наблюдателем и изучал пути (язык) с тех пор, как я познакомился с ним и всеми его замечательными возможностями почти год назад, поэтому, надеюсь, мой первый пост на эту тему не вызовет слишком много взрывов мозга. и подходит при одной только мысли о некоторых моих идеях.

Мое намерение состоит в том, чтобы подкинуть вам (сообществу go) этот пикантный кусочек идеи, чтобы вызвать обсуждение и получить обратную связь от ваших приветствуемых ответов. Итак, без лишних слов, позвольте мне перейти к сути дела.

Проработав с go почти год (и полюбив его), я все еще ищу способы сделать свой код более разборчивым, простым, сухим и, по возможности, эстетически приятным. Время от времени я сталкиваюсь с кодом, который представляет собой скользкую лестницу в ад, многократно скопированную в различные части приложения, или, что еще хуже, бессвязную мешанину из того, что, вероятно, могло бы стать довольно приличной головоломкой для поиска слов. Это то, чего я стараюсь избегать любой ценой. Я не могу не чувствовать, что постоянно повторяющееся (хотя и идиоматичное)

if err != nil {
    return
}

играет небольшую роль в том, что выполнение кода немного затрудняется. Конечно, это разборчиво и просто, но не совсем сухо имхо. Так что это заставило меня задуматься о том, как это можно было бы закодировать, чтобы сделать его немного менее мокрым, но при этом придерживаться первоначальной цели: быть разборчивым, простым, сухим и, вишенкой на торте, эстетически приятным.

Вход, работа.

или немного другая альтернатива, где с еще более простой реализацией задачи может быть

однако я думаю, что первая альтернатива может быть немного более идиоматична, чем вторая.

Мое личное мнение таково, что эта конструкция все еще читабельна, проста и достаточно суха, чтобы быть какой-то полезной, а также имеет несколько других возможных преимуществ;

  • отдельные задачи могут быть обернуты, чтобы разрешить внедрение необходимых ресурсов или других параметров.
  • Полный рабочий список может быть создан до того, как будут выполнены какие-либо задачи, что позволит выполнить другую инициализацию/проверку перед запуском задач, которые могут изменить состояние, своего рода транзакцию, если хотите.
  • Может быть, какие-то другие, о которых я не подумал…

Итак, теперь я обращаюсь к вам, уважаемое сообщество go(lang). Что насчет этого? Пожалуйста, прокомментируйте на досуге. Спасибо.

p.s. Никаких оскорблений, предназначенных для что насчет этого? отсылка журналиста, спрашивающего Лео ДиКаприо о его первых оскарах. https://www.youtube.com/watch?v=nWtWdBLiBDY