01.4
This commit is contained in:
407
ru/01.4.md
Normal file
407
ru/01.4.md
Normal file
@@ -0,0 +1,407 @@
|
||||
# Инструменты разработки для 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.
|
||||
|
||||

|
||||
|
||||
Figure 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.
|
||||
|
||||

|
||||
|
||||
Figure 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://code.google.com/p/msysgit/)
|
||||
|
||||
В командной строке установите 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 path туда, где находится 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.
|
||||
|
||||
( ***Смотрите [Пост блога](http://wuwen.org/tips-about-using-intellij-idea-and-go/) об установке и использовании IntelliJ IDEA с Go шаг за шагом *** )
|
||||
|
||||
## Ссылки
|
||||
|
||||
- [Содержание](preface.md)
|
||||
- Предыдуший раздел: [Утилиты Go](01.3.md)
|
||||
- Следующий раздел: [Заключение](01.5.md)
|
||||
Reference in New Issue
Block a user