Основы
Go — строго типизированный язык с лаконичным и простым синтаксисом. В первом модуле мы рассмотрим базовые конструкции языка.
Функции и методы
В этом модуле мы углубимся в функции. Разберем методы структур и пользовательских типов. Познакомимся с вариативными функциями, интерфейсами, ошибками и способами их обработки. Научимся использовать отложенные функции.
Go — язык общего назначения с широкими возможностями и понятным синтаксисом. Мультиплатформенный, обладает надежной, хорошо документированной стандартной библиотекой и ориентирован на удобные подходы к самой разработке
35 уроков с практикой в браузере
Лучшая книга PRO ГО “Научитесь играть в Го!”
Сейчас мы с вами научимся играть в Го. Сделать это легко, уверяю вас!
И поможет нам в этом интерактивное приложение, которое будет спорить с вами, особенно когда вы не правы. Будет проверять вас, когда вы оказались на высоте! Внимательно читайте вопросы, не торопитесь сделать ход, подумайте.
Наш вводный курс предназначен для обучения правилам Го и основным приемам.

В Го ступени роста мастерства обозначают кю и дан. Несмотря на то, что здесь встречаются достаточно сложные задачи, мы для удобства обозначаем 50 кю, как первую ступень знакомства с Го, и 30 кю, ступень, с которой человек может уверенно играть в интернете по правилам, понимать основные направления, разгадывать загадки, задавать задачки сопернику и, главное, получать удовольствие от игры!
В завершении учебного курса, на ступени 32 кю, вы сможете повторить все правила по игре Го.
Как мы будем учиться?
Сражение в Го происходит на игровом поле в 361 пункт, 19 на 19 линий.
Камни в Го ставятся на пересечение линий.

Большинство задач будем решать на уменьшенном учебном варианте игрового поля, представленном в виде диаграмм. Внизу диаграммы подсказка – чей сейчас ход. Чтобы сделать ход – нужно щелкнуть на доске.
Попробуйте щелкнуть в пункт А:
Для решения некоторых задач нужно будет сделать несколько ходов.
Если внизу диаграммы появится слово “неверно“, нажмите кнопку-стрелку “назад” и попробуйте сделать другой ход – боремся за слово “решено“.
Когда решите задачи, нажимайте кнопку “Дальше”, чтобы подняться на следующую ступень мастерства:
Рекомендуемые приложения для компьютера и телефона.
GoQuest – приложение для игры в интернете, специализирующееся на быстрых партиях на досках 9х9 и 13х13. По достижении определенного уровня позволяет играть и на доске 19х19. Достаточно игроков, чтобы начать партию меньше, чем за минуту в любое время суток. Лучший выбор, если хотите поиграть, но у вас мало времени.
Hactar Go Lite – единственное приложение на маркете, в котором реализовано атари-го. Есть разные уровни сложности, разные схемы (до 1 камня, до 3, до 5), есть возможность играть и на территорию на доске 9х9. Также имеются подборки задач на разные темы и уровни сложности.
Tsumego Pro – отличное приложение для решения задач на “жизнь и смерть”. В комплект входит 3 подборки по 50 задач начального уровня. Остальные подборки можно недорого приобрести. Ежедневно обновляются 6 задач разного уровня. Рекомендуем!
Crazy Stone – бесплатное приложение для игры с достаточно сильным роботом. Настраиваемая сила игры от 15 кю до 2 дана. Доступны все возможности обычного редактора партий. Также подойдет для игры вдвоем на планшете, когда под рукой нет комплекта. Можно установить контроль времени. Существует и продвинутая платная версия приложения.
BW-Go – один из лучших по функциональности редакторов партий. Имеет плагины подключения робота, словаря дзёсек и клиента для игры на dragongoserver.net. Если вам нужно записать партию или позицию или вы любите играть по переписке – заслуживает внимания.
ElyGo Lite – приложение от разработчика Tsumego Pro для просмотра/редактирования партий, игры с ботом, решения задач.
Go4Go Free – приложение для просмотра партий профессионалов из базы go4go.net. Самые свежие партии профессионалов.
GoMoves – приложение для поиска по базе партий профессионалов. Вы вводите позицию на доске, а приложение находит, в каких партиях профессионалов данная позиция встречалась.
Guess the Move – найди следующий ход в партии профессионалов! Своеобразные интересные задачки на поиск лучшего хода. Единственное в своем роде приложение.
SmartGo – платное, но бесспорно лучшее Го-приложение для iPhoneiPad. Более 22 000 партий профессионалов, 2000 задач на жизнь и смерть. Также есть возможность записывать свои варианты и партии, играть с ботом, посылать и импортировать партии из других источников. Для знакомства с книжным режимом приложено 30 разобранных партий профессионалов. SmartGo Kifu – iPad версия SmartGo Pro. Это же приложение есть для Windows/Macintosh.
SmartGo Books– книжный магазин и читалка книг по Го на iOS. Приложение бесплатно, так же как и одна глава в каждой книге. Все диаграммы интерактивны и позволяют вам прокручивать диаграммы.
EasyGo Lite – приложение с задачами на разные темы и возможностью создавать и редактировать партии. Интуитивно понятный интерфейс, многим нравится. В бесплатной версии есть ограничения, но не критичные.
Go Problems – приложение от сайта goproblems.com – одного из крупнейших сайтов с задачами по Го. Из коробки доступно несколько сотен бесплатных задач, есть возможность докупить некоторые подборки. Подходит для iPad и iPod.
Little Go – бесплатное приложение с открытым исходным кодом. Позволяет играть друг с другом на одном устройстве или с ботом.
Igowin Tutor – бесплатная версия Igowin с обучалкой. Может подойти новичкам.
iGoban – оригинальное приложение, максимально правдоподобно симулирующая игру за гобаном.
CGoban3 – он же клиент для игры на сервере KGS, идеально подойдет для просмотра и редактирования партий в формате sgf. Программа кроссплатформенная, работает на java.
WebGoBoard – универсальное приложение для браузера, которое позволяет просматривать/редактировать партии. На базе этого приложения создан клиент для игры онлайн на KGS GoUniverse. Разработчик – Илья Кириллов. Сайт – webgoboard.com.
Sgf Screensaver – заставка для Windows, в которую можно подгрузить любые партии в формате sgf
FreedGo – уникальная программа, которая позволяет играть в Го на всяких “экзотических” поверхностях (лист Мёбиуса, тор, шар и др.)
Leela – сильная бесплатная программа, играющая в Го, с возможностью анализа партии. Максимальная сила игры – 8 дан на KGS. На обычном компьютере играет в силу 5-6 дана.
Lizzie – программа для игры с сильнейшим бесплатным (на данный момент) роботом LeelaZero. На компьютерах с хорошей видеокартой играет в силу профессиональных игроков. Позволяет анализировать партию “налету”, оценивая вероятность победы после каждого хода, и просматривать варианты, которые считает компьютер. Программа кроссплатформенная, работает на java.
Проведенный специалистами StackOverflow в прошлом году опрос показал, что программисты на Go, получают одну из самых высоких в отрасли зарплат.
Хорошие Go-разработчики не имеют проблем с поиском вакансий, но чтобы освоить перспективный язык, вам понадобится терпение, усидчивость и подборка ресурсов от «Библиотеки программиста». Поехали!

Курсы

Обучающие видеоролики на Youtube

Статьи, подкасты, телеграм-каналы, комьюнити

Полезные ссылки на Github

Литературы для для изучения Go хватает, но лучшие и самые свежие издания доступны только на английском языке. В нашей подборке их довольно много.
Программирование на языке Go (2013)

В этом руководстве Go-разработчик Марк Саммерфилд объясняет, как программировать, используя революционные функции и идиомы языка. Каждая глава предлагает несколько примеров живого кода, призванных стимулировать эксперименты и помочь вам быстро развить мастерство.
Язык программирования Go (2018)

В издании более сотни грамотно реализованных практических примеров, охватывающих все основные темы, наиболее важные настройки и большое количество приложений на Go. В каждой главе есть упражнения для проверки изученного материала.
Introduction to Programming in Go for Smart Beginners (2021)

Повествование в этом свежем издании начинается с азов и переходит к более сложным темам. После прочтения книги, состоящей из серии небольших уроков, вы получите достаточно знаний, чтобы самостоятельно начать программировать на Go. Хорошее введение в идиоматическое использование языка в широком контексте.
Discover Google’s Go language (2020)

Простой для восприятия стиль изложения этого издания понравится всем желающим освоить основы языка программирования Go. Код в нем имеет цветовую маркировку, облегчающую понимание новичкам, ничего не знающим о программировании. Книга за относительно небольшой промежуток времени научит вас создавать свои собственные приложения.
Head First Go (2019)

Основанная на последних исследованиях в области когнитивной науки и нейробиологии книга введет ваш мозг в режим обучения и расскажет о Golang простым языком. С ее помощью вы узнаете как писать код, а также разберетесь с базовыми навыками и методами работы, необходимыми начинающему программисту.
Go in Action (2015)

Книга написана для умеющих программировать людей, которые хотят изучить Go. Авторы дают подробную, исчерпывающую информацию по теме, фокусируясь на основной спецификации, синтаксисе языка и последующем тестировании готового продукта.
Building Reliable Services in Unreliable Environments (2021)

Kubernetes, Docker, Prometheus – продукты, написанные на Golang. Книга про использование сильных сторон языка при разработке масштабируемых и отказоустойчивых облачных сервисов в любых средах. В ней описано создание приложений – от низкоуровневой разработки до построения архитектурных решений высокого уровня.
An Idiomatic Approach to Real-World Go Programming (2021)

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

Книга представляет собой практическое введение в язык Go и послужит прочной основой для ваших будущих проектов. С ней читатели освоят синтаксис языка, поработают с типами и функциями и изучат параллелизм, а несколько десятков упражнений помогут им закрепить пройденный материал.
Go Web Programming (2016)

Издание учит создавать веб-приложения на Go, используя современные принципы дизайна. Вы узнаете, как реализовать шаблон проектирования внедрения зависимостей, использовать параллелизм в веб-приложениях, а также как создавать и использовать JSON и XML в веб-сервисах. Книга поможет свести к минимуму зависимость вашего приложения от внешних фреймворков и повысить его производительность. Материал рассчитан на людей, знакомых с основами языка Go и общими концепциями веб-разработки.
Если вы знаете неплохие ресурсы по изучению Golang, не вошедшие в статью, порекомендуйте их в комментариях. Надеюсь, наш обзор был вам полезен. Удачи!
В конце 2000-х корпорация Google, почувствовав потерю производительности и замедление рабочего процесса из-за большой и сложной кодовой базы, разработала свой язык программирования, ориентированный на скорость и простоту. Созданный для решения внутренних проблем компании, он быстро набрал популярность и стал одним из ведущих современных языков. Golang стали использовать повсеместно для программ, связанных с сетями и инфраструктурой, в качестве высокопроизводительного серверного языка. На сегодняшний день он входит в 10-ку самых популярных языков программирования согласно опросу Stack Overflow. Это ли не повод начать его изучать?
В помощь всем желающим освоить профессию go-разработчика, библиотека программиста сделала подборку актуальных бесплатных учебных курсов по Golang на русском языке.
Программирование на Golang от Stepik

На этом курсе, посвященном основам языка Golang, вы изучите базовые возможности языка: циклы, срезы, горутины, работа с JSON и многое другое. Множество практических задач разного уровня для тренировки и закрепления пройденного материала, проверяемых автоматической системой для быстрой обратной связи. Преподаватели курса всегда отвечают на возникшие вопросы в комментариях. Там же вы можете общаться с однокурсниками на интересующие вас темы.
Курс предназначен для слушателей, знающих основы хотя бы одного из языков программирования.
По окончании предоставляется сертификат.
Длительность: 30 уроков.
Курс Learn Go от Be Geek

Серия видеоуроков по основам программирования на Go от Youtube-канала Be Geek с разбором всех основных тем и практических примеров, необходимых для быстрого старта.
Также в программе есть несколько роликов о заработке на фрилансе. Теоретические лекции без тестов и практических заданий. Подходит для новичков.
Длительность: 24 урока.
«Программирование на Go» от VK Team

Девять двухчасовых видеолекций по основам Golang-разработки от программистов из VK Team дадут вам начальный багаж знаний для дальнейшего развития в профессии.
Подойдут для быстрого старта всем желающим изучить язык Go.
Длительность: 9 уроков.
«Golang для начинающих» от itProger

Небольшой курс по Go, рассчитанный на новичков. Прослушав его, вы научитесь кодить на базовом уровне, изучите основные конструкции языка и создадите на Go небольшой веб-сайт с поддержкой баз данных MySQL.
«Разработка веб-сервисов на Go – основы языка» от МФТИ совместно с Mail. ru Group

Курс по основам программирования на Go с примерами основных задач, часто встречающихся в современной серверной веб-разработке. Предназначен для слушателей с базовыми знаниями программирования. В лекциях используется профессиональный жаргон без подробных пояснений. Не подходит для абсолютных новичков.
После прохождения курса вы получите электронный сертификат.
Длительность: 1 месяц с момента начала занятий.
«Разработка веб-сервисов на Golang» от МФТИ совместно с Mail. ru Group (2 часть)

Вторая часть предыдущего курса расскажет об анатомии веб-сервисов. Вы узнаете этапы разработки, а также научитесь работе с хранилищами и микросервисами.
Длительность: 4 недели с момента начала занятий.
«Курс по изучению Golang для начинающих» от golangify. com

Полный курс по изучению основ программирования на Golang для начинающих с примерами кода и полным описанием рассмотренных паттернов.
Курс похож прикладной учебник – удобный текстовый справочник со всей необходимой теорией и практическими примерами.
Подходит для новичков (но требует знания основ программирования)
Длительность: 35 уроков.
«Основы Golang» от ITVDN

Очередная серия обучающих видеороликов по теме от ребят из команды ITVDN. Просмотрев его, вы научитесь создавать простые приложения на Go, работать со стандартными библиотеками и писать многопоточные приложения
Длительность: 8 уроков.
«Научись программировать на Go» от Булата Замалутдинова

Несмотря на то, что курс небольшой, у него достаточно интересная и обширная программа. В видеоуроках предоставлена теория программирования на языке Golang и даны понятные пояснения.
Подходит для зрителей без опыта программирования
Длительность: 10 уроков.
«Погружение в Google Go» от Романа Левищенко

Курс по основам программирования на Go, затрагивающий важные вопросы разработки, c представленными исходниками и материалами для самостоятельного обучения.
Только базовая информация о языке и программировании, нет практических задач и обратной связи.
Длительность: 25 уроков.
«Уроки Golang» от AJ Golang Learn

Курс дает базовые знания разработки на Go и будет понятен даже абсолютным новичкам в программировании. Состоит из небольших видеолекций, изложенных простым понятным языком.
Подходит для людей без базового знания программирования
Длительность: 18 уроков.
Курсы на английском
Добавим несколько курсов по теме на английском языке, пользующихся популярностью у иностранных слушателей:
Важно помнить, что в трудных ситуациях вы всегда можете воспользоваться – . А вот подборка официальных ответов разработчика языка на самые часто задаваемые вопросы пользователей о программировании на Go.
Как гласит китайская мудрость: «Не бойся, что не знаешь – бойся, что не учишься!» Это к тому, что при должном стремлении и упорстве вы всегда добьетесь поставленной цели.
Удачи в обучении!
Материалы по теме
Заходим на официальный сайт Go.

Нажимаем на Download Go.

Выбираем версию для своей операционной системы и скачиваем.
Пользователям Windows нужно запустить установщик. Если вы используете Linux, придется распаковать скачанный архив в /usr/local/go и экспортировать путь /usr/local/go/bin в переменную среды $PATH . Получиться должна примерно следующая структура папок:

Чтоб убедиться в успешной установке введите команду go version в консоли или терминале:

Установка редактора кода
Go поддерживается в различных редакторах кода (IDE), к примеру:
Полный список IDE доступен по сылке: https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins
Создание проекта
Создадим директорию helloworld. Перейдем в нее и выполним команду:
go mod init helloworld
Должен появиться файл с названием go.mod.
Код на Go лежит в пакетах, а пакеты группируются в модули. Модуль – это набор пакетов Go с файлом go.mod в корне. Этот файл определяет путь модуля и набор импортируемых модулей.
Далее создадим файл main.go и запишем в него следующий код:
Компиляция и запуск программы
Чтобы запустить код, откройте консоль или терминал. Далее перейдите в каталог, где расположен файл main.go и выполните команду:
go run main.go
Результат работы программы будет следующим:

Вы написали первую программу на Go, поздравляем!
Давайте разберем, что здесь происходит:
Код, листинги которого будут приведены ниже, должны располагаться внутри фигурных (операторных) скобок функции main. В примерах функция main будет опущена для краткости.
Переменные
Переменные в Go характеризуются названием и типом, они должны объявляться до первого использования.
В Go нельзя объявить переменную и не использовать ее – программа не соберется.
Объявление переменной в Go:
var number int
Мы объявили переменную number с типом int. int – тип переменной, которая хранит целое число.
Базовые типы данных:
При объявлении переменной устанавливается ее начальное значение. Для int это 0, для float – 0.0, для string – “” (пустая строка), для bool – false.
Если начальное значение переменной известно во время объявления, можно воспользоваться краткой записью:
number := 0
// эквивалентно
var number = 0
Чтобы записать значение в переменную после ее объявления, воспользуйтесь оператором =:
var number, secondNumber int
number = 15
secondNumber = number
println(number) // Вывод: 15
println(secondNumber) // Вывод: 15
Над переменными можно производить операции с помощью операторов. Например, числа можно сравнить, а строки конкатенировать.
Список операторов Go:

Управляющие конструкции
Для управления тем, какие строки кода исполнятся и в каком порядке, существуют специальные конструкции. Давайте перечислим основные:
Следование
Весь код исполняется последовательно, строка за строкой.
Условие
Для исполнения участка кода в зависимости от условия используется условная конструкция if:
Сообщение не будет выведено на экран, так как условие ложно. На месте условия может использоваться все, результатом чего будет значение типа bool.
Чтобы определить код, который выполнится при невыполнении ни одного условия можно добавить else:
Дополнительно к конструкции управления if имеется конструкция switch, работающая подобным образом:
switch получает значение 200 и ищет case, в котором значения совпадают и выполняет только определенный участок кода.
switch также может использоваться как замена if. Перепишем пример с if:
Роль else здесь играет слово default. Оно также будет выполнено при невыполнении ни одного из условий.
Циклы
Обратите внимание: для повторения участков кода в Go используется только цикл for, который может принимать разные формы:
Этот цикл распечатает значения от 1 до 10.
Если нужен цикл без счетчика, нужно опустить первую и третью части цикла for вместе с точкой запятой:
На каждом повторении цикла будет проверяться заданное условие. Пока условие истинно, цикл будет продолжаться. Как только условие станет ложным, он прервется.
Для бесконечного цикла можно опустить условие:
Чтобы остановить цикл, используется ключевое слово break:
При достижении конструкции break цикл будет завершен.
Внутри цикла также можно использовать специально слово continue. Оно отличается от break тем, что не сразу завершает цикл, а лишь пропускает оставшийся код цикла и начинает новое повторение.
Массивы
Массив – это последовательная группа ячеек памяти, имеющих одинаковое имя и одинаковый тип. Простое определение – набор упорядоченных элементов.
Обращение к элементам массива производится по имени массива и индексу элемента. Элементы массива индексируются с нуля.
Заполнение массива значениями:
Если начальное значение массива известно при объявлении, можно воспользоваться литералом объявления массива:
Для избежания лишнего кода воспользуемся кратким объявлением:
Размер массива статичен и не может меняться во время выполнения программы. Для этих целей используются слайсы.
Слайсы
Слайс является более удобной альтернативой массиву. Объявление слайса отличается от объявления массива только отсутствием размера:
Слайс может менять размер во время выполнения программы. Для добавления новых элементов в слайс используется встроенная функция append:
numbers = append(numbers, 13) // добавление одного элемента
numbers = append(numbers, 14, 15) // добавление двух элементов
Для переиспользования часто используемого кода нужны функции.
Функция – это названный кусок кода, который может вызываться по имени. Мы уже использовали функцию println для вывода значений на экран.
Функция должна быть объявлена вне функции main:
После ключевого слова func указывается название функции. Далее в круглых скобках аргументы, которые принимает функция. После закрывающей круглой скобки указывается одно или несколько возвращаемых значений функции, а затем следует код функции в операторных скобках.
Функция Sum складывает два числа и возвращает результат:
Функция SumAndDivide возвращает как сумму, так и частное чисел:
Обе функции доступны в функции main:
Пакеты
Писать код большой программы в одном файле неудобно. Тем более переиспользовать этот код нельзя. Поэтому код разбивается на пакеты – наборы файлов с расширением .go и кодом, который можно импортировать и переиспользовать. Стандартная библиотека языка Go содержит много часто используемых и важных пакетов. Например, в пакете strings содержатся функции для работы со строками.
Импорт и использование пакета strings:
Ключевое слово import нужно для импорта используемых пакетов. Чтобы использовать функции из пакета strings, нужно:
Первое серверное приложение “Hello Web”
В пакете http содержится все необходимое для создания веб-сервера.
Запустите код. Далее откройте браузер и перейдите по адресу http://localhost:9999/. Вы получите сообщение “Hello Web!”
Функция http.HandleFunc устанавливает функцию HelloWeb, по пути /, а http.ListenAndServe запускает сервер по указанному адресу.
Поздравляем, вы написали ваш первый веб-сервер на Go!
Литература
Мы пробежались по основам Go: переменные, операторы, управляющие конструкции, функции.
Ценностями языка являются:
Go современный, широко используемый и востребуемый язык программирования, который стоит начать изучать прямо сейчас.
Хочу освоить алгоритмы и структуры данных, но сложно разобраться самостоятельно. Что делать?
Алгоритмы и структуры данных действительно непростая тема для самостоятельного изучения: не у кого спросить и что-то уточнить. Поэтому мы запустили курс «Алгоритмы и структуры данных», на котором в формате еженедельных вебинаров вы:
Курс подходит как junior, так и middle-разработчикам.
Теперь вы можете учиться на новой платформе Go Magic!
На сайте нашего нового проекта Go Magic доступны бесплатные интерактивные курсы с видео-уроками и задачками для начинающих:
1. Правила Го — экспресс курс
2. Основы Го на доске 13х13
Там же вы найдете много других курсов и прекрасных фич! 😉
Предисловие
Правила Го очень просты. Вы без труда их изучите в течение 5-10 минут. Однако эта простота порождает гигантское количество вариантов и дает широкое поле для творчества и фантазии, поэтому Го по праву считается самой сложной в мире игрой. Можно сказать, что здесь из элементарно простого рождается гениально сложное. И эта сложность фундаментального порядка: игра Го так же сложна, как, например, сложна математика, музыка или философия, и при этом не менее интересна, чем вышеперечисленные науки.
В процессе этого курса Вы узнаете всё необходимое, чтобы самостоятельно играть в Го.
Шаг 1. Базовые правила
Для начала запомните следующие правила:
Взгляните на доску – она так и ждет пока вы сделаете свой первый ход!
Попробуйте поставить камни в центр доски, на край доски, и в самый угол доски.
Поздравляю, Вы уже знаете половину правил Го!
Шаг 2. Захват камней
Это простое правило. Попробуйте понять его интуитивно.
На доске камни расставлены таким образом, что некоторые из них окружены и могут быть захвачены одним ходом. Захватите отмеченные камни по порядку: 1, 2, 3, 4.
Шаг 3. Пункты дыхания или дамэ
Давайте разберемся детально как, в какой момент камни захватываются.
У каждого камня, поставленного на доску, есть пункты дыхания – это соседние пустые пункты доски, напрямую связанные с камнем линией. По-японски они называются дамэ. На диаграмме дамэ отмечены крестиками. Как вы видите, у камня в центре 4 дамэ, на краю – 3, а в углу – 2.
Ситуация, когда до захвата камня или группы камней остается один ход, называется атари.
Однако, белые могут избежать захвата, если успеют первыми поставить камень:
Что ж, теперь вы знаете вторую половину правил Го! Очень сложно? 🙂
Шаг 4. Практика захвата камней
Ход черных. Захватите три белых камня!
Для этого потребуется два хода. Учтите, первый ход очень важен.
Для полноты картины нам остается изучить некоторые нюансы, которые часто называют правилами, но это скорее следствия из вышеописанных правил, а не самостоятельные правила.
В Го практически нет ограничений. Вы можете поставить камень на любой свободный пункт доски. Также в любой момент Вы можете пропустить ход (сказать “пас”). Но всё-таки есть два совершенно логичных и естественных запрета. И первое, это запрет на самоубийство.
Черным нельзя ходить в пункт А. Если черные сыграют в A, то окажется, что их камень уже окружен и не имеет пунктов дыхания (дамэ). Это самоубийство, и самоубийство в Го запрещено. Компьютер не даст поставить Вам камень в пункт А.
Однако, если во время “самоубийственного” хода захватываются камни противника, то такой ход разрешен.
Сделайте ход в А и захватите два камня.
Из этого правила следует, что можно построить группу камней, которую не получится захватить даже при полном окружении. Такая группа должна содержать, как минимум, два пункта, в которые противнику было бы запрещено поставить камень. Ее называют двуглазой крепостью.
Примеры групп камней, которые нельзя захватить, расставлены на доске ниже. Обратите внимание, что группы 1 и 2 не соединены между собой, но при этом образуют живую двуглазую группу. Группа 3 также является “неубиваемой”.
Взгляните на группу 4. Куда нужно черному поставить камень, чтобы избежать гибели своих камней?
Если Вам не до конца понятно, то экспериментируйте с позицией на доске, чтобы не оставалось вопросов.
Шаг 6. Правило ко
Второе и последнее ограничение в Го – правило ко. Оно так же абсолютно логично, и необходимость в нем совершенно естественна, как и запрет на самоубийство. Правило ко гласит, что нельзя повторять позицию предыдущего хода.
Рассмотрим следующую элементарную ситуацию, которая с большой вероятностью может встретиться у вас в партии. Ход черных. Захватите белый камень ходом в А.
Теперь ход белых, но компьютер не разрешит сейчас захватить черный камень обратно, потому что повторится позиция предыдущего хода. Если бы этого ограничения не было, то возникло бы зацикливание – черные и белые постоянно захватывали бы один “несчастный” камень и партия никогда не кончилась. Поэтому в такой ситуации захватить обратно камень можно только через ход. Постарайтесь самостоятельно понять, как это правило работает, экспериментируя с позицией на доске.
Ну, что же, теперь переходим к самому главному!
Шаг 7. Цель игры
Итак, мы изучили все правила Го и по сути их три:
1. Правило очередности.
2. Правило захвата камней.
3. Запрещенные ходы (запрет на самоубийство и правило ко).
В известных нам настольных играх (шашках, шахматах) главная цель – это захват фишек или фигур. Однако в Го это не так. В Го можно одержать победу, не захватив ни одного камня. Это связано с тем, что кроме захвата камней в Го можно (и нужно!) захватывать территорию. Давайте разберемся что это такое.
На диаграмме ниже территория черных и белых отмечена черными и белыми квадратиками соответственно. В данном случае Черные захватили 11 очков территории, а Белые – 18 (пересчитайте, пожалуйста). Остальная часть доски еще не поделена и там будет продолжаться борьба.

Попробуем дать определение. Территория – это свободные пункты доски, которые оцеплены камнями одного цвета так, чтобы не допустить вторжения со стороны противника.
Справедливости ради нужно заметить, что понятие территории несколько абстрактное, и объяснить его словами так, чтобы сразу было всё понятно, практически невозможно. Поэтому не пугайтесь, если вам не всё ясно. В любом случае теорию надо закрепить на практике. Но надеюсь, что какое-то понимание уже есть.
Цель игры – захватить как можно больше территории и как можно больше камней противника. Каждый захваченный камень противника приносит одно очко + каждый свободный пункт доски, окруженный своими камнями, также приносит одно очко. В конце партии очки подсчитываются и определяется победитель. Выиграл тот, у кого больше очков.
Из-за того, что в Го существует два способа “зарабатывания” очков, то во время игры приходится постоянно оценивать позицию и выбирать ход, который принес бы максимальную выгоду – это может быть и захват территории, и захват камней противника. Но чаще всего выгоднее захватывать территорию.
Шаг 8. Примеры партий
Закрепим новые знания на примерах. Посмотрите следующую партию. (Используйте клавиши навигации, расположенные внизу доски).
Партия закончилась, когда доска была полностью поделена и не осталось ни одного хода, который приносил бы выгоду, то есть либо увеличивал свою территорию, либо уменьшал территорию противника, либо захватывал камни противника. В конечной позиции следующий ход будет совершен или на свою территорию, тем самым отнимая у себя же очки, или на территорию противника, делая “подарок” противнику. Когда некуда ходить, обычно пропускают ход (говорят “пас”). После двух пасов начинается подсчет очков.
В данной партии черные не захватили ни одного камня, но окружили 28 очков территории; белые – захватили 1 камень и окружили 26 очков территории, суммарно 27 очков. В результате выиграли черные, набрав на 1 очко больше.

Теперь рассмотрим более сложный пример.
Здесь уже больше борьбы. Заметьте, что не все камни были захвачены и сняты с доски во время игры. Когда видно, что камни в любом случае будут захвачены, то их не нужно “доедать”, потому что в процессе “доедания” придется ставить камни на собственную территорию, отнимая у себя же очки. Такие камни называются пленными камнями. При подсчете очков пленные камни снимаются с доски и тоже учитываются наравне с захваченными камнями.
В результате этой партии у черных – 3 пленных камня и 21 очко территории, всего – 24 очка; у белых – 1 захваченный камень, 3 пленных камня и 12 очков территории, всего – 16 очков. Снова выиграли черные, но с перевесом в 8 очков.

Примечание. Из-за того, что черные ходят первые, то у них изначально есть небольшое преимущество. И чтобы уровнять начальные условия игроков, в прошлом веке было введено правило коми, согласно которому белые получают коми, то есть дополнительные 6.5 очков. И если учесть коми, то в последней партии черные выиграли не 8 очков, а только 1.5 очка.
Шаг 9. Настоящее Го
До этого момента мы рассматривали задачи и партии на доске размера 9х9. Такая доска используются только в обучении. На самом деле в Го играют на доске 19х19. В общем случае доска для Го может быть совершенно любого размера и формы (см. приложение FreedGo в разделе “Обзор приложений”). Теоретически Го может быть даже трехмерным (когда играть нужно не на площадь, а на объем), но традиционно для игры в Го используется доска размера 19х19. Именно здесь начинается настоящее Го.
Играя на доске такого размера, человеческий разум используется в полной мере – приходится мыслить образно, строя планы на захват территории, приходится просчитывать ходы вперед, когда сталкиваются черные и белые камни, и при этом нужно следить за всей доской целиком, не упуская ни одного большого хода. Это очень непросто, но чрезвычайно интересно и захватывающе! Неслучайно Го является не только самой сложной в мире игрой, но и самой популярной.
Посмотрите партию двух профессионалов и попытайтесь уловить общий ход игры. Это самая короткая партия в истории Го (142 хода)!
Партия получилась короткой из-за того, что оба игрока огородили и сохранили огромные участки доски. После подсчёта оказалось, что у чёрных 128 очков, а у белых 129. Заметим, что 7 чёрных камней в верхнем правом углу не имеют шансов построить два глаза и выжить, так что при подсчёте они будут сняты с доски.
Шаг 10. Что дальше?
Теперь, когда Вы знаете правила, перед Вами открывается безграничный и многогранный мир Го. Вам предстоит изучить основные технические и стратегические приемы, открыть великих мастеров игры, создать собственный неповторимый стиль и сыграть много-много интересных и захватывающих партий! Как же я Вам завидую!..
Если Вас увлекла эта игра и хотите двигаться дальше, то могу порекомендовать следующее:
1. Попробуйте сыграть несколько партий с компьютером на доске 9х9 или 13х13 (онлайн или в приложении), чтобы закрепить полученные навыки. Однако слишком много с компьютером не играйте, а постарайтесь как можно скорее поиграть на онлайн сервере – наблюдайте за партиями, играйте с людьми (см. список рекомендуемых серверов).
2. Найдите своего учителя. Конечно, Го можно изучать самостоятельно, но с опытным наставником гораздо интереснее и продуктивнее. Возможно, что Вам подойдет кто-то из мастеров нашего клуба.
3. Если еще не видели, то обязательно посмотрите аниме “Хикару и Го”. Это очень хороший мультик. Очень.
4. Изучайте Го на телефоне, решайте задачи (см. обзор приложений).
5. Найдите и присоединитесь к сообществу игроков Го в своем городе. Если его нет, то найдите единомышленников создайте сами! Вы всегда можете обратиться к нам за помощью.
6. Участвуйте в соревнованиях по Го, которые организует Российская федерация Го.
Успехов! Надеюсь, что встретимся с вами на турнире!
Похожие курсы
Посмотреть все курсы категории Программирование




Строки
В третьем модуле мы разберем как устроены строки, как их обходить. Узнаем, что такое руны и зачем они в Go. Рассмотрим самые распространенные функции для работы со строками.
Коллекции
Коллекции в Go представлены 3-мя типами: array, slice и map. Каждый тип имеет свои особенности, которые мы рассмотрим в данном модуле
Начните прямо сейчас
Конкурентное программирование
В этом модуле мы познакомимся с конкурентным программированием. Узнаем, что такое горутины и как коммуницировать между ними с помощью каналов.
Регистрация не требуется
Моя школа в online