Новичок?

Изначально избегайте параллельных аспектов Go - каналов и горутин.

Удивлен?

Не волнуйся. Просто прочтите, что Дэйв Чейни, Франческ Кампой Флорес, Марсель ван Лохуизен и Марк Бейтс ответили на вопрос: «На каких областях Go должен сосредоточиться будущий Go-разработчик?

Дэйв Чейни - это может показаться немного спорным, но я советую избегать, по крайней мере, на начальном этапе параллельных аспектов Go; каналы и горутины.

Это может показаться странным, поскольку это одна из основных особенностей языка. Нельзя сказать, что параллельные аспекты языка слишком сложны для изучения новыми программистами; они не. Однако ими легко злоупотреблять, и Go - это язык, который хорошо реагирует на модерацию.

Если вам не повезло использовать библиотеку go.crypto / ssh до того, как Хан-Вен Ниенхейс и Джонатан Питтман убрали мое вопиющее чрезмерное использование каналов, вы поймете, о чем я.

Вот некоторые конкретные советы:

  • Поймите силу интерфейсов: они - один из замечательных подарков Go, потенциально более важных, чем каналы или горутины.
  • Если вы переходите с другого языка, будь то динамический язык, такой как Python или Ruby, или компилируемый язык, такой как Java или C #, оставьте свой объектно-ориентированный багаж у двери. Go - объектно-ориентированный язык, но он не является языком на основе классов и не поддерживает наследование.
  • Удаление наследования из языка дает явную возможность практиковать мантру композиции вместо наследования, и борьба с ней приведет только к разочарованию.
  • Если вы ждете, когда в язык будут добавлены универсальные типы и функции, мой совет - перестать задерживать дыхание и научиться любить язык, который у нас есть сегодня.
  • С выпуском 5-й точки и выпуском 6-го через несколько месяцев возможности новой языковой функции или настройки синтаксиса становятся маловероятными. С этого момента основное внимание уделяется инструментам, надежности и производительности.

Франсеск Кампой Флорес - Простота, простота и простота. И параллелизм. А если серьезно, то простота - самый важный аспект Go. Избегайте чрезмерной разработки и вместо того, чтобы иметь огромные монолитные базы кода, создавайте простые части, которые хорошо сочетаются друг с другом.

Марсель ван Лохёйзен - я бы сказал, сосредоточьтесь на сильных сторонах Го.

  • Получите хорошее представление о концепции небольших интерфейсов и о том, как это позволяет вам сшивать код (например, «io.Reader»).
  • Хорошее понимание принципов параллелизма заставит вас использовать его больше. Вы удивитесь, как часто это может пригодиться.

Марк Бейтс - зависит от уровня опыта. Младшие разработчики всегда должны концентрироваться на изучении хороших основ, не зависящих от языка. Всем остальным мой самый большой совет - придерживаться способа написания кода Go. Не пытайтесь навязать ему шаблоны и приемы вашего предыдущего языка. Вы будете бороться и проиграете.

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