# 1.4 Инструменты разработки для Go В этом разделе я ознакомлю Вас с несколькими средами разработки (IDE), которые помогут Вам более эффективно программировать. Они обладают такими возможностями как умное автодополнение и автоформатирование. Все они кроссплатформенные, поэтому шаги по настройке, которые я покажу, не будут слишком отличаться в зависимости от операционной системы, которую Вы используете. ## LiteIDE LiteIDE - нетребовательный к ресурсам системы IDE с открытым исходным кодом, который предназначен для разработки проектов только на Go. Он разработан visualfc. ![](images/1.4.liteide.png?raw=true) Рисунок 1.4 Главная панель LiteIDE Отличительные черты LiteIDE: - Кроссплатформенность - Windows - Linux - Mac OS - Кросскомпилируемость - Поддерживает разные среды компиляции - Поддерживает кросс-компиляцию проектов на Go - Управление проектами - Представление досументации основано на $GOPATH - Система компиляции основана на $GOPATH - Документация API основана на $GOPATH - Редактор исходного кода Go - Схема кода - Полная поддержка gocode - Доступ к документации Go и содержанию API - Просмотр выражений языка через `F1` - Переход к декларациям функций по `F2` - Поддержка Gdb - Автоформат через `gofmt` - Другое - Поддержка множества языков - Система плагинов - Темы текстового редактора - Поддержка синтаксиса основана на Kate - Умное полнотекстовое автодополнение - Настраиваемые сочетания клавиш для быстрого выполнения задач - Поддержка Markdown - Предпросмотр в реальном времени - Настраиваемые CSS - Экспорт в HTML и PDF - Конвертация и слияние в HTML и PDF ### Установка LiteIDE - Установите LiteIDE: - [Страница загрузки](http://code.google.com/p/golangide) - [Исходные коды](https://github.com/visualfc/liteide) Сначала установите Go, затем скачайте версию LiteIDE, соответствующую Вашей операционной системе. Распакуйте скачанный пакет. - Установите gocode: Для того, чтобы заработало автодополнение, установите gocode. go get -u github.com/nsf/gocode - Настройте среду компиляции: Теперь измените конфигурацию LiteIDE согласно Вашей операционной системе. В Windows, если Вы используете 64-битную версию Go, Вам нужно выбрать на панели инструментов win64 в качестве среды конфигурации. Затем выберите `opinion`, найдите `LiteEnv` в левом списке и откройте `win64.env` в правом списке. GOROOT=c:\go GOBIN= GOARCH=amd64 GOOS=windows CGO_ENABLED=1 PATH=%GOBIN%;%GOROOT%\bin;%PATH% 。。。 Замените `GOROOT=c:\go` на свой путь установки Go, сохраните. Если у Вас есть MinGW64, добавьте в переменную окружения path значение `c:\MinGW64\bin` для поддержки `cgo`. В 64-битном Linux нужно выбрать linux64 на панели инструментов в качестве среды конфигурации. Затем выберите `opinion`, найдите `LiteEnv` в левом списке и выберите файл `linux64.env` в правом. GOROOT=$HOME/go GOBIN= GOARCH=amd64 GOOS=linux CGO_ENABLED=1 PATH=$GOBIN:$GOROOT/bin:$PATH 。。。 Замените `GOROOT=$HOME/go` на тот, где у Вас установлен Go, сохраните. - $GOPATH $GOPATH - это путь, указывающий на то, где находятся проекты. Для получения подробностей откройте командную строку (или нажмите ``Ctrl+`пробел``в LiteIDE), а затем напечатайте `go help gopath`. В LiteIDE очень легко увидеть и изменить значение $GOPATH. Для этого зайдите в `View - Setup GOPATH`. ## Sublime Text Сейчас я хочу рассказать про Sublime Text 2 (для краткости Sublime) + GoSublime + gocode + MarGo. И вот почему: - Умное автодополнение ![](images/1.4.sublime1.png?raw=true) Рисунок 1.5 Умное автодополнение Sublime - Автоформатирование исходных кодов - Управление проектами ![](images/1.4.sublime2.png?raw=true) Рисунок 1.6 Управление проектами в Sublime - Подсветка синтаксиса - Пробный период без функциональных ограничений навсегда. Вам могут напоминать о том, что нужно приобрести лицензию, но можно это игнорировать, если хотите. Конечно же, если Вы поймете, что Sublime увеличил Вашу производительность, и Вам он нравится, приобретите, пожалуйста, лицензионную копию и поддержите таким образом развитие проекта! Сначала скачайте версию [Sublime](http://www.sublimetext.com/), соответствующую Вашей операционной системе. 1. Нажмите ``Ctrl+`пробел``, откройте командную строку и введите следующие команды: import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Пожалуйста, перезапустите Sublime Text для завершения установки' Когда процесс установки закончится, перезапустите Sublime Text. Затем найдите опцию `Package Control` в меню "Preferences". ![](images/1.4.sublime3.png?raw=true) Рисунок 1.7 Sublime Package Control 2. Для установки GoSublime, SidebarEnhancements и Go Build, нажмите `Ctrl+Shift+p`, чтобы открыть управление пакетами, затем напечатайте `pcip` (сокращение от "Package Control: Install Package"). ![](images/1.4.sublime4.png?raw=true) Рисунок 1.8 Установка пакетов Sublime Теперь введите "GoSublime", нажмите OK для установки пакета и повторите те же шаги для установки SidebarEnhancements и Go Build. По завершении установки снова перезапустите редактор. 3. Чтобы проверить, успешно ли прошла установка, откройте Sublime, откройте файл `main.go` и проверьте, правильно ли подсвечивается синтаксис. Напечатайте `import` и проверьте, правильно ли работает автодополнение кода. После того, как Вы ввели `import "fmt"`, напечатайте `fmt.` где-нибудь после выражения `import` и проверьте, работает ли автодополнение для функций. Если все работает, это значит, что Вы все настроили правильно. Если нет, еще раз проверьте значение переменной $PATH. Откройте терминал, выполните `gocode`. Если запуск не произошел, переменная $PATH настроена неправильно. ## Vim Vim - это популярный текстовый редактор для программистов, происшедший от своего предшественника Vi. У него есть функции умного автодополнения, компиляции и перехода к ошибкам. ![](images/1.4.vim.png?raw=true) Рисунок 1.8 Умное автодополнение для Go в Vim 1. Установите подсветку ситаксиса для Go: cp -r $GOROOT/misc/vim/* ~/.vim/ 2. Включите подсветку синтаксиса: filetype plugin indent on syntax on 3. Установите [gocode](https://github.com/nsf/gocode/): go get -u github.com/nsf/gocode gocode по умолчанию будет установлен в `$GOBIN`. 4. Настройте [gocode](https://github.com/nsf/gocode/): ~ cd $GOPATH/src/github.com/nsf/gocode/vim ~ ./update.bash ~ gocode set propose-builtins true propose-builtins true ~ gocode set lib-path "/home/border/gocode/pkg/linux_amd64" lib-path "/home/border/gocode/pkg/linux_amd64" ~ gocode set propose-builtins true lib-path "/home/border/gocode/pkg/linux_amd64" Немного о конфигурации gocode: propose-builtins: определяет, нужно ли включать умное автодополнение; по умолчанию false. lib-path: изначально gocode ищет пакеты в `$GOPATH/pkg/$GOOS_$GOARCH` и `$GOROOT/pkg/$GOOS_$GOARCH`. Эта настройка нужна для добавления дополнительных путей. 5. Поздравляем! Попробуйте `:e main.go` для погружения в мир Go! ## Emacs Emacs называют оружием Бога. Это не только редактор, но и мощная IDE. ![](images/1.4.emacs.png?raw=true) Рисунок 1.10 Главная панель редактора Go в Emacs 1. Установите подсветку синтаксиса: cp $GOROOT/misc/emacs/* ~/.emacs.d/ 2. Установите [gocode](https://github.com/nsf/gocode/): go get -u github.com/nsf/gocode По умолчанию gocode будет установлен в `$GOBIN`. 3. Настройте [gocode](https://github.com/nsf/gocode/): ~ cd $GOPATH/src/github.com/nsf/gocode/vim ~ ./update.bash ~ gocode set propose-builtins true propose-builtins true ~ gocode set lib-path "/home/border/gocode/pkg/linux_amd64" lib-path "/home/border/gocode/pkg/linux_amd64" ~ gocode set propose-builtins true lib-path "/home/border/gocode/pkg/linux_amd64" 4. Установите [автодополнение](http://www.emacswiki.org/emacs/AutoComplete): Скачайте и распакуйте: ~ make install DIR=$HOME/.emacs.d/auto-complete Настройте файл ~/.emacs: ;;auto-complete (require 'auto-complete-config) (add-to-list 'ac-dictionary-directories "~/.emacs.d/auto-complete/ac-dict") (ac-config-default) (local-set-key (kbd "M-/") 'semantic-complete-analyze-inline) (local-set-key "." 'semantic-complete-self-insert) (local-set-key ">" 'semantic-complete-self-insert) Для более подробной информации пройдите по [ссылке](http://www.emacswiki.org/emacs/AutoComplete). 5. Настройте файл .emacs: ;; golang mode (require 'go-mode-load) (require 'go-autocomplete) ;; speedbar ;; (speedbar 1) (speedbar-add-supported-extension ".go") (add-hook 'go-mode-hook '(lambda () ;; gocode (auto-complete-mode 1) (setq ac-sources '(ac-source-go)) ;; Imenu & Speedbar (setq imenu-generic-expression '(("type" "^type *\\([^ \t\n\r\f]*\\)" 1) ("func" "^func *\\(.*\\) {" 1))) (imenu-add-to-menubar "Index") ;; Outline mode (make-local-variable 'outline-regexp) (setq outline-regexp "//\\.\\|//[^\r\n\f][^\r\n\f]\\|pack\\|func\\|impo\\|cons\\|var.\\|type\\|\t\t*....") (outline-minor-mode 1) (local-set-key "\M-a" 'outline-previous-visible-heading) (local-set-key "\M-e" 'outline-next-visible-heading) ;; Menu bar (require 'easymenu) (defconst go-hooked-menu '("Go tools" ["Go run buffer" go t] ["Go reformat buffer" go-fmt-buffer t] ["Go check buffer" go-fix-buffer t])) (easy-menu-define go-added-menu (current-local-map) "Go tools" go-hooked-menu) ;; Other (setq show-trailing-whitespace t) )) ;; helper function (defun go () "run current buffer" (interactive) (compile (concat "go run " (buffer-file-name)))) ;; helper function (defun go-fmt-buffer () "run gofmt on current buffer" (interactive) (if buffer-read-only (progn (ding) (message "Buffer is read only")) (let ((p (line-number-at-pos)) (filename (buffer-file-name)) (old-max-mini-window-height max-mini-window-height)) (show-all) (if (get-buffer "*Go Reformat Errors*") (progn (delete-windows-on "*Go Reformat Errors*") (kill-buffer "*Go Reformat Errors*"))) (setq max-mini-window-height 1) (if (= 0 (shell-command-on-region (point-min) (point-max) "gofmt" "*Go Reformat Output*" nil "*Go Reformat Errors*" t)) (progn (erase-buffer) (insert-buffer-substring "*Go Reformat Output*") (goto-char (point-min)) (forward-line (1- p))) (with-current-buffer "*Go Reformat Errors*" (progn (goto-char (point-min)) (while (re-search-forward "" nil t) (replace-match filename)) (goto-char (point-min)) (compilation-mode)))) (setq max-mini-window-height old-max-mini-window-height) (delete-windows-on "*Go Reformat Output*") (kill-buffer "*Go Reformat Output*")))) ;; helper function (defun go-fix-buffer () "run gofix on current buffer" (interactive) (show-all) (shell-command-on-region (point-min) (point-max) "go tool fix -diff")) 6. Поздравляем, все готово! Панель скорости по умолчанию отключена - для включения удалите символы комментария в строке `;;(speedbar 1)`, или можно сделать это посредством `M-x speedbar`. ## Eclipse Eclipse также является отличным инструментом разработки. Я покажу Вам, как использовать его для того, чтобы писать программы на Go. ![](images/1.4.eclipse1.png?raw=true) Рисунок 1.1 Основная панель Eclipse для редактирования кода на Go 1. Скачайте и установите [Eclipse](http://www.eclipse.org/). 2. Скачайте [goclipse](https://code.google.com/p/goclipse/) [http://code.google.com/p/goclipse/wiki/InstallationInstructions](http://code.google.com/p/goclipse/wiki/InstallationInstructions). 3. Скачайте gocode: gocode на Github: https://github.com/nsf/gocode В Windows Вам нужно установить git, обычно мы используем [msysgit](https://msysgit.github.com/). В командной строке установите gocode: go get -u github.com/nsf/gocode Если хотите, можете установить его из исходных кодов. 4. Скачайте и установите [MinGW](http://sourceforge.net/projects/mingw/files/MinGW/). 5. Настройте плагины: Windows->Preferences->Go (1).Настройте компилятор Go. ![](images/1.4.eclipse2.png?raw=true) Рисунок 1.12 Настройки Go в Eclipse (2).Настройте gocode (если нужно), установите путь к gocode туда, где находится gocode.exe. ![](images/1.4.eclipse3.png?raw=true) Рисунок 1.13 Настройки gocode (3).Настройте gdb (по желанию), установите путь к gdb туда, где находится gdb.exe. ![](images/1.4.eclipse4.png?raw=true) Рисунок 1.14 Установки gdb 6. Проверьте правильность установки: Создайте новый проект Go и файл hello.go как на рисунке: ![](images/1.4.eclipse5.png?raw=true) Рисунок 1.15 Создание нового проекта и файла Протестируйте установку так (Вам нужно напечатать команду в консоли Eclipse): ![](images/1.4.eclipse6.png?raw=true) Рисунок 1.16 Тестирование программы Go в Eclipse ## IntelliJ IDEA Те, кто работал с Java, должны быть знакомы с этой IDE. Она поддерживает подсветку синтаксиса Go и умное автодополнение кода посредством плагина. 1. Скачайте IDEA, подойдут версии и Ultimate, и Community. ![](images/1.4.idea1.png?raw=true) 2. Установите плагин Go. Выберите `File - Setting - Plugins`, затем выберите `Browser repo`. ![](images/1.4.idea3.png?raw=true) 3. Выберите `golang`, затем двойным щелчком мыши `download and install` и подождите, пока завершится загрузка. ![](images/1.4.idea4.png?raw=true) Нажмите `Apply`, затем перезапустите приложение. 4. Теперь можно создавать проект Go. ![](images/1.4.idea5.png?raw=true) Введите расположение Go sdk на следующем шаге - скорее всего, это $GOROOT. ## Visual Studio Code Visual Studio Code это редактор кода, но при этом обладающий функциями IDE, полагающийся на расширения. ![](images/1.4.vscode1.png?raw=true) - Скачайте [vscode](https://code.visualstudio.com/). - Установите плагин Go. Выберите в левой панели `Расширения` или нажмите `CTRL+SHIFT+X`, затем выберите в поиске расширений `Go` от likehoban. ![](images/1.4.vscode2.png?raw=true) - Также необходимо, чтобы уже был установлен Go, настроен GOROOT и GOPATH. - Далее необходимо установить дополнительные пакеты для Go: Открываем в vscode любой go-файл, после чего в нижнем правом углу увидим сообщение “Analysis Tools Missing”. Надо нажать на это сообщение и недостающие пакеты установятся автоматически. - Теперь можно создавать проект Go. ![](images/1.4.vscode3.png?raw=true) ## Ссылки - [Содержание](preface.md) - Предыдуший раздел: [Утилиты Go](01.3.md) - Следующий раздел: [Итоги раздела](01.5.md)