Быстрый старт – программируем на Go под Windows — настройка Environment

    Update (22.07.2013)


    С момента изначального написания статьи многое изменилось. Я немного обновил пост, чтобы в сети не висела устаревшая инструкция.

    Вместо вступления


    Если кто не знает, Go (www.golang.org) – компилируемый язык программирования. Как и все хочет быть «лучше чем C». Разработку языка поддерживает Google (создатели языка — Rob Pike, Robert Griesemer и Ken Tompson), но Go — полностью open-source, в разработке принимает участие большое количество людей не из Google. Меня язык заинтересовал своей простотой и необычным подходом к ООП и многопоточности. Захотелось попробовать. Моя рабочая OS — Windows и будучи разбалованным платформой .Net, C# и Visual Studio мне было трудно именно начать. Хотя на самом деле это оказалось совсем просто, и достаточно быстро я настроил себе удобный Environment, состоящий, по сути, из IDE с подобием IntelliSense. О том, как это сделать за 15 минут я и хотел бы рассказать.

    Установка Go


    На момент последнего редактирования статьи, актуальная версия — Go 1.1.1. Дистрибутив можно скачать по ссылке: code.google.com/p/go/downloads/list. Дистрибутив выбираем в зависимости от разрядности установленной версии Windows: x64 — go1.1.1.windows-amd64.msi; x32 — go1.1.1.windows-386.msi. Скачиваем, устанавливаем. Теперь Go живет в C:\Go. Инсталлятор сам настроит нужные переменные среды.

    Workspace


    Теперь необходимо создать папку, которая будет чем-то вроде корневой рабочей директории. В составе дистрибутива Go идет утилита «go», которая «все в одном» — она используется для сборки проектов, для установки сторонник библиотек, для запуска тестов и т.п. Используется парадигма Convention over Configuration. Единственная настройка, которую нужно сделать — это добавить переменную среды GOPATH, в которой указать корневую папку, где у нас будут хранится все исходники наших и сторонних проектов, скомпилированные библиотеки и исполняемые файлы. Создаем такую папку: C:\gopath и добавляем переменную среды:



    Также нужно добавить %GOPATH%\bin в перменную среды PATH.



    Установка IDE


    Перепробовав много различных редакторов текста и IDE, я остановил свой выбор на GoLangIDE (http://code.google.com/p/golangide/). Она очень легковесная, т.е. можно просто открыть file.go и скомпилировать его; но в то же время полностью поддерживает работу с проектами по Convention утилиты «go». Для debug’а в мире Go используют gdb, эта IDE интегрируется с gdb – можно ставить breakpoint’ы, просматривать значения локальных переменных.
    В общем, скачиваем и распаковываем в C:\. Запускаем C:\liteide\bin\liteide.exe. Полу-русский язык советую сразу сменить на английский: Вид -> Options, меняем язык на English, “Применить”, надо перезапустить IDE.

    Hello World


    В последней версии GoLangIDE, аналог IntelliSense (GoCode) уже встроен и ничего дополнительно устанавливать не нужно. Поэтому сразу приступаем к делу:
    Запускаем IDE, создаем новый проект (Ctrl+N):



    Пишем fmt, ставим точку – видим выпадающий список функций.



    Выбираем функцию (жмем Tab) — можно вводить параметры функции, жмем F1 — видим подсказку с сигнатурой функции.



    Компилируем наш Hello World: Ctrl + B
    Запускаем в отдельном окне консоли: Ctrl + Shift + F5



    Вот собственно и все.

    Что дальше?


    По golang достаточно много хороших обучающих материалов. Моя коллекция ссылок:
    tour.golang.org — интерактивный обучающий тур
    golang.org/doc/effective_go.html — постарались передать main idea языка
    golangtutorials.blogspot.com/2011/05/table-of-contents.html — коллекция отличных туториалов
    miek.nl/files/go — OpenSource книжка по Go
    В запросах поисковика нужно писать golang, а не просто go. Успехов!
    Поделиться публикацией

    Похожие публикации

    Комментарии 18

      +1
      очень интересно. подойдет изучать сыну вместо GW/MS Basic :-) и к тому-же с дальнейшей перспективой язык!
        +7
        Ну, если учесть количество закрытых гуглом проектов, то перспективы весьма туманны.
          +3
          язык open-source, «закрыть» его сложно, по крайней мере фанаты продолжат на нем писать
            +8
            Open-source технология не развивается без поддержки бизнеса и корпораций, т.к. «сообщество» всегда довольно пассивно, не имеет четких целей, планов и не способно вкладывать достаточные средства в сопутствующую инфраструктуру и работу, которая необходима для того, чтобы бизнес считал эту технологию достаточно стабильной для использования, перспективной и развивающейся. Сам по себе язык программирования — ничто.
            Может я несколько преувеличиваю, но идея, думаю, понятна.
            +3
            Это язык Роба Пайка, а не Гугла, со сложившимся комьюнити, уже достаточно заметный в сфере образования как минимум.

            Я бы за Dart волновался.
          +2
          Вот ничего не могу с собой поделать. С одной стороны Go прекрасен, особенно если любишь C. И на нем можно бы написать кучу полезного, системного ПО и не только.
          А вот перспектива действительно сомнительная. На GAE использовать его удобно, а вот на настольных системах — вряд ли. Бинарники огромные, поддержка архитектур не полная (жду не дождусь MIPS-версии). В Embedded тоже туманно — про tiny runtime который может работать без ОС информации очень мало. IDE мало.
          Да и вообще. На русском инфы очень мало, пиарят его слабо, поддержка gcc-go еще недостаточно хорошая.
          Но язык-то, язык-то хороший!
            0
            Да все языки хорошие, вы правы без мультиплатформенности сместить C, Java, невозможно, если только одна архитектура не займет лидирующей позиции на рынке.
              0
              Языку в первую очередь нужна ниша. У Go с этим пока туго, кроме академических проектов (типа напиши свой интерпретатор лиспа или компилятор брейнфака), биндингов к разным либам и GAE приложений я пока не ничего видел.
              Кстати, а может хабровчане которые использовали этот язык поделятся своими проектами?
            0
            Сборка dll уже реализована?
              0
              Такого даже в планах не было.
              Как вы себе это представляете dll на языке с GC, требующие GC рантайма?
              Теоритически, наверное, возможно. Но слово dll hell получит еще один смысл.
                +1
                что вы имели ввиду? а простая class-library .net-сборка чем вам не dll?
                  0
                  о, извиняюсь, заработался, думал в другой топик пишу :)
                  но тем не менее, может всё-таки есть dll самая обычная, наподобие .net-сборок, также требующих GC
              0
              Круто! Про местную IDE не знал. Юзал плагин для IntellJ. Тоже приятная штука. А еще на Win XP после завершения Installer-а нужно поменять переменную GOOS(кажется так) на значение Mingw по-моему, а то либы не подключились. Уже не помню точно, но нужно быть внимательным тут.
                0
                Хм… первый раз слышу про такое. Попробую добыть WinXP и проверить.
                  0
                  Проверил на WinXP — все работает как и на Win7, дополнительно прописывать ничего не нужно. Программы компилируются, стандартные библиотеки подключаются.
                  Наверно проблема была в предыдущих релизах и больше не актуальна.
                0
                А как делать GUI с помощью go? Не фреймворка для qt и go?
                  0
                  Для qt — нет. Посмотрите что есть тут go-lang.cat-v.org/library-bindings в разделе GUIs and Widget Toolkits.
                  Лично я думаю, что на данном этапе не стоит делать GUI с помощью Go, он на это не рассчитан, думаю будет очень неудобно.
                  Зато можно легко написать сервис, который будет предоставлять Web интерфейс по заданному порту.
                  0
                  Всё нормально с перспективой.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое