430 lines
20 KiB
Markdown
430 lines
20 KiB
Markdown
# 1.4 Инструменты разработки для Go
|
||
|
||
В этом разделе я ознакомлю Вас с несколькими средами разработки (IDE), которые помогут Вам более эффективно программировать. Они обладают такими возможностями как умное автодополнение и автоформатирование. Все они кроссплатформенные, поэтому шаги по настройке, которые я покажу, не будут слишком отличаться в зависимости от операционной системы, которую Вы используете.
|
||
|
||
## LiteIDE
|
||
|
||
LiteIDE - нетребовательный к ресурсам системы IDE с открытым исходным кодом, который предназначен для разработки проектов только на Go. Он разработан visualfc.
|
||
|
||

|
||
|
||
Рисунок 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. И вот почему:
|
||
|
||
- Умное автодополнение
|
||
|
||

|
||
|
||
Рисунок 1.5 Умное автодополнение Sublime
|
||
|
||
- Автоформатирование исходных кодов
|
||
- Управление проектами
|
||
|
||

|
||
|
||
Рисунок 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".
|
||
|
||

|
||
|
||
Рисунок 1.7 Sublime Package Control
|
||
2. Для установки GoSublime, SidebarEnhancements и Go Build, нажмите `Ctrl+Shift+p`, чтобы открыть управление пакетами, затем напечатайте `pcip` (сокращение от "Package Control: Install Package").
|
||
|
||

|
||
|
||
Рисунок 1.8 Установка пакетов Sublime
|
||
|
||
Теперь введите "GoSublime", нажмите OK для установки пакета и повторите те же шаги для установки SidebarEnhancements и Go Build. По завершении установки снова перезапустите редактор.
|
||
|
||
3. Чтобы проверить, успешно ли прошла установка, откройте Sublime, откройте файл `main.go` и проверьте, правильно ли подсвечивается синтаксис. Напечатайте `import` и проверьте, правильно ли работает автодополнение кода. После того, как Вы ввели `import "fmt"`, напечатайте `fmt.` где-нибудь после выражения `import` и проверьте, работает ли автодополнение для функций.
|
||
|
||
Если все работает, это значит, что Вы все настроили правильно.
|
||
|
||
Если нет, еще раз проверьте значение переменной $PATH. Откройте терминал, выполните `gocode`. Если запуск не произошел, переменная $PATH настроена неправильно.
|
||
|
||
## Vim
|
||
|
||
Vim - это популярный текстовый редактор для программистов, происшедший от своего предшественника Vi. У него есть функции умного автодополнения, компиляции и перехода к ошибкам.
|
||
|
||

|
||
|
||
Рисунок 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.
|
||
|
||

|
||
|
||
Рисунок 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 "<standard input>" 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.
|
||
|
||

|
||
|
||
Рисунок 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.
|
||
|
||

|
||
|
||
Рисунок 1.12 Настройки Go в Eclipse
|
||
|
||
(2).Настройте gocode (если нужно), установите путь к gocode туда, где находится gocode.exe.
|
||
|
||

|
||
|
||
Рисунок 1.13 Настройки gocode
|
||
|
||
(3).Настройте gdb (по желанию), установите путь к gdb туда, где находится gdb.exe.
|
||
|
||

|
||
|
||
Рисунок 1.14 Установки gdb
|
||
|
||
6. Проверьте правильность установки:
|
||
|
||
Создайте новый проект Go и файл hello.go как на рисунке:
|
||
|
||

|
||
|
||
Рисунок 1.15 Создание нового проекта и файла
|
||
|
||
Протестируйте установку так (Вам нужно напечатать команду в консоли Eclipse):
|
||
|
||

|
||
|
||
Рисунок 1.16 Тестирование программы Go в Eclipse
|
||
|
||
## IntelliJ IDEA
|
||
|
||
Те, кто работал с Java, должны быть знакомы с этой IDE. Она поддерживает подсветку синтаксиса Go и умное автодополнение кода посредством плагина.
|
||
|
||
1. Скачайте IDEA, подойдут версии и Ultimate, и Community.
|
||
|
||

|
||
|
||
2. Установите плагин Go. Выберите `File - Setting - Plugins`, затем выберите `Browser repo`.
|
||
|
||

|
||
|
||
3. Выберите `golang`, затем двойным щелчком мыши `download and install` и подождите, пока завершится загрузка.
|
||
|
||

|
||
|
||
Нажмите `Apply`, затем перезапустите приложение.
|
||
|
||
4. Теперь можно создавать проект Go.
|
||
|
||

|
||
|
||
Введите расположение Go sdk на следующем шаге - скорее всего, это $GOROOT.
|
||
|
||
## Visual Studio Code
|
||
|
||
Visual Studio Code это редактор кода, но при этом обладающий функциями IDE, полагающийся на расширения.
|
||
|
||

|
||
|
||
- Скачайте [vscode](https://code.visualstudio.com/).
|
||
|
||
- Установите плагин Go. Выберите в левой панели `Расширения` или нажмите `CTRL+SHIFT+X`, затем выберите в поиске расширений `Go` от likehoban.
|
||
|
||

|
||
|
||
- Также необходимо, чтобы уже был установлен Go, настроен GOROOT и GOPATH.
|
||
|
||
- Далее необходимо установить дополнительные пакеты для Go:
|
||
|
||
Открываем в vscode любой go-файл, после чего в нижнем правом углу увидим сообщение “Analysis Tools Missing”. Надо нажать на это сообщение и недостающие пакеты установятся автоматически.
|
||
|
||
- Теперь можно создавать проект Go.
|
||
|
||

|
||
|
||
## Ссылки
|
||
|
||
- [Содержание](preface.md)
|
||
- Предыдуший раздел: [Утилиты Go](01.3.md)
|
||
- Следующий раздел: [Итоги раздела](01.5.md)
|