Files
build-web-application-with-…/ru/01.4.md
2017-11-25 12:33:40 -03:00

430 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 "<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.
![](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)