У якому редакторі писати на Go?
Створимо першу програму мовою Go. Для написання коду нам знадобиться якийсь текстовий редактор. Можна взяти будь-який редактор, наприклад вбудований блокнот або популярний Notepad++ або будь-який інший. Для трансляції вихідного коду додаток потрібен компілятор.
Створення програми
Визначимо на жорсткому диску папку для зберігання файлів із вихідним кодом. Допустимо, в моєму випадку це буде папка C:\golang . У цій папці створимо новий текстовий файл, який перейменуємо на hello.go .
Відкриємо цей файл у будь-якому текстовому редакторі та визначимо в ньому наступний код:
package main import "fmt" func main()
Що у цій програмі робиться? Програма мовою Go визначається як пакетів. Програмний код повинен бути визначений у певному пакеті. Тому на початку файлу за допомогою оператора package вказується, до якого пакету належатиме файл. В даному випадку це пакет main:
Причому пакет повинен називатися саме main, оскільки саме цей пакет визначає файл, що виконується.
При складанні програмного коду нам може знадобитися функціонал інших пакетів. Go є безліч вбудованих пакетів, які містять код, що виконує певні дії. Наприклад, у нашій програмі ми виводитимемо повідомлення на консоль. І для цього нам потрібна функція Println, яка визначена у пакеті fmt. Тому другим рядком за допомогою директиви import ми підключаємо цей пакет:
Далі йде функція main. Це головна функція будь-якої програми на Go. Насправді все, що виконується у програмі, виконується саме функції main.
Визначення функції починається зі слова func , після якого слідує назва функції, тобто main.Після назви функції у дужках йде перелік параметрів. Так як функція main не приймає жодних параметрів, то в даному випадку вказуються порожні дужки.
Потім у фігурних дужках визначається тіло функції main - ті дії, які і виконує функція.
У разі функція виводить на консоль рядок " Hello Go! " . Для цього застосовується функція Println(), яка визначена у пакеті fmt. Тому при виклику функції спочатку вказується ім'я пакета та через точку ім'я функції. А в дужках функції передається повідомлення, яке вона повинна виводити на консоль:
fmt.Println("Hello Go!")
Компіляція та виконання програми
Тепер скомпілюємо та виконаємо цю програму. Для цього необхідно передати файл із вихідним кодом компілятору go.exe та вказати потрібну команду. Для цього відкриємо командний рядок (термінал) і перейдемо в ній за допомогою команди cd до папки, де зберігатиметься файл з вихідним кодом hello.go (у моєму випадку це папка C:\golang):
Потім виконаємо програму за допомогою наступної команди:
go – це компілятор. Оскільки при встановленні шлях до компілятора автоматично прописується в змінну PATH у змінних оточення, то нам не треба вказувати повний шлях C:\Go\bin\go.exe, а достатньо просто написати ім'я програми go. Далі йде параметр run , який каже, що ми хочемо виконати програму. І насамкінець вказується власне файл програми hello.go.
У результаті після виконання консоль буде виведено повідомлення " Hello Go! " .
Ця команда виконує, але не компілює програму в окремий файл. Для компіляції виконаємо іншу команду:
Після виконання цієї команди у папці з вихідним файлом з'явиться ще один файл, який називатиметься hello.exe і який ми можемо запускати.Після цього ми можемо виконати програму, запустивши в консолі цей файл:
Найкращі IDE для Golang?
Go це фантастична мова програмування. Він також поставляється з комплексним ланцюжком інструментів. Багато розробників просто використовують текстові редактори з або без плагінів для написання коду Go, але багато інших вважають за краще використовувати належні IDE (інтегровані середовища розробки).
У цьому уроці ви дізнаєтеся про поточний стан Go IDE і готові вибрати свою зброю.
Навіщо використовувати IDE?
Я завжди був великим шанувальником IDE. На початку кар'єри я використовував Microsoft Visual Studio для розробки C/C++, а також C#. Я використовував NetBeans для короткого періоду розробки Java. Я використовував PyCharm JetBrains для розробки на Python, і в даний час я використовую JetBrains Gogland для розробки на Go.
Зазвичай я працюю з великомасштабними програмними системами, які складаються з кількох проектів із тисячами файлів. Мені потрібна велика допомога з великою кодовою базою. Ось основні причини, через які мені так подобаються IDE:
Інтегрована організація коду та навігація
За допомогою гарної IDE ви можете упорядкувати свій код в ієрархічному порядку, легко переглядати та переміщати його, а також швидко шукати код. Середовище IDE буде виконувати набагато більше, ніж просто текстовий пошук, і дозволить вам виконувати фільтрацію за мовними конструкціями (наприклад, показувати лише класи чи інтерфейси з певним ім'ям).
Комплексне тестування
Комплексне тестування має вирішальне значення. Я витрачаю більшу частину свого часу на розробку тестів - або пишу їх, намагаюся змусити їх пройти, або досліджую, чому тести раптово провалилися.Хороша IDE із вбудованим тестуванням дозволить вам запускати тести вибірково (все, тільки один проект, тільки невдалі тести з попереднього запуску), виділить збої та дозволить вам швидко перейти у потрібне місце у коді, щоб виправити будь-які проблеми.
Інтегроване налагодження
Це, мабуть, найважливіша особливість для мене. Я люблю вбудовані відладчики. Я хочу мати можливість додавати точки зупинки (включаючи умовні точки зупинки), переглядати трасування стека та переглядати змінні у кожному кадрі.
Що стосується бонусних балів (дякую PyCharm), мені подобається проводити сеанс інтерактивної консолі при досягненні точки зупинки. Альтернативи налагодження printf (вимагають зміни коду та перебудови) або перегляду файлів журналів (часто з недостатнім ступенем деталізації або великою кількістю шуму) є набагато неприємнішими і менш продуктивними. Навіть автономні налагоджувачі, такі як gdb, не наближаються до продуктивності хорошого інтегрованого налагоджувача.
Gogland
Gogland – це моя поточна Golang IDE. Це дуже молодий продукт, який все ще знаходиться на ранній стадії попереднього перегляду, але я досі вважаю його найбільш повним та інтегрованим Go IDE. Він побудований на міцній основі JetBrains, тому він надзвичайно надійний і сповнений функціональності.
Редактор коду та допомога
Редактор коду Gogland чудовий. Ось деякі з його можливостей:
- Інтерфейс із вкладками
- Розумне авто-завершення коду
- Інспекції та швидкі виправлення
- Рефакторинг
- Швидка навігація
- Швидкі спливаючі вікна для документації, визначення, використання, структури тощо.
- Генерація коду (наприклад, інтерфейс реалізації)
- Виявлення рекурсивних викликів
- Відображення типу будь-якого виразу
- Функція виділення точок виходу
- Підказки параметрів
дебаггер
Відладчик Gogland чудовий. Він побудований поверх Delve, який використовується іншими IDE, які ми також розглядаємо. Він використовує знайомі конфігурації налагодження JetBrains для управління всім, що стосується запуску налагодження, таким як двійковий файл, що виконується, змінні середовища, робочий каталог і аргументи командного рядка.
Ви можете встановити контрольні точки, умовні контрольні точки та годинник. Коли досягається точка зупинки, ви можете спостерігати трасування стека та локальні змінні у кожному кадрі. На жаль, глобальні змінні не відображаються і часто необхідні Go.
У мене була одна проблема з відладником, коли точки зупинки спрацьовували передчасно! Розглянемо наступний фрагмент коду:
Іноді якщо я поставлю точку зупинки на останньому рядку, вона потрапить, але значення z буде 0, а не 4. Як це може бути? Виявляється, відладчик якось заплутався. Якщо я продовжу крокувати кодом, він повернеться до z: = x + y , призначить 4 для z, а потім знову повернеться до останнього рядка і правильно виведе 4 на екран.
Я витратив кілька годин, намагаючись налагодити складний шматок коду, не розуміючи, що не завжди отримую правильну картину. Зрештою, я з'ясував, що відбувається, і просто проігнорував хибне раннє спрацювання точок зупинки.
Я не впевнений, що це проблема Delve чи Gogland, але я впевнений, що вони скоро це виправлять. Пам'ятайте, що це просто перегляд.
Запуск тестів
Тестовий прогін дозволяє запускати, зупиняти та перезапускати тести.Я зміг успішно використовувати його для запуску та налагодження модульних тестів, а також інтеграційних тестів з використанням пакету тестування Go, так і середовища тестування BDD, такого як ginkgo.
Go Tools
Go поставляється з різними інструментами, і Gogland інтегрує їх у IDE.
Контроль версій
Gogland успадковує зрілу систему управління вихідним кодом інших продуктів JetBrains. допомогою додаткових плагінів.
Інтегрований термінал
Gogland надає вбудований термінал на випадок, якщо вам потрібно буде виконати деякі команди.
Розширюваність
Gogland має безліч вбудованих можливостей, але він повністю розширюється, і багато його вбудованих функцій насправді є попередньо завантаженими плагінами. Ви можете встановити багато корисних плагінів, і ви можете розробити свої власні плагіни, якщо хочете.
Visual Studio Code
Visual Studio Code - це редактор коду з відкритим вихідним кодом, розроблений в основному Microsoft (з великим вкладом спільноти) Він заснований на Electron, який у свою чергу заснований на Chromium підтримує безліч мов і спочатку орієнтований на веб-розробку. .Він має сильну підтримку розробки Go, включаючи інтеграцію всіх інструментів Go та Delve відладчика через виділене розширення.
Visual Studio Code також пропонує вбудовану інтеграцію з git, ієрархічний браузер папок/файлів та інтерфейс з вкладками.
Підтримка IntelliSense (автозаповнення, відображення типів параметрів та документація) чудова і забезпечує дуже приємний досвід редагування.
Visual Studio Code дуже чуйний і швидкий.
- Списки завершення (використовуючи gocode)
- Довідка підпису (за допомогою gogetdoc або godef + godoc)
- Сніпетети
- Коротка інформація (за допомогою gogetdoc або godef+godoc)
- Визначення Goto (використовується gogetdoc або godef + godoc)
- Пошук посилань (використовуючи guru)
- Посилання CodeLens
- Схема файлу (використовуючи go-outline)
- Пошук символів робочого простору (з використанням go-символів)
- Перейменувати (використовуючи gorename. Примітка. Щоб скасувати перейменування для роботи у Windows, необхідно мати інструмент diff)
- Build-on-save (використовуючи go build та go test)
- Lint-on-save (з використанням golint або gometalinter)
- Формат (використовуючи goreturns або goimports або gofmt)
- Генерувати скелет юніт-тестів (використовуючи gotests)
- Додати імпорт (використовуючи gopkgs)
- Додати/видалити теги у структурних полях (використовуючи gomodifytags)
- Семантичні/синтаксичні повідомлення про помилки під час введення (використовуючи gotype-live)
- Запускати тести під курсором, у поточному файлі, у поточному пакеті, у всьому робочому просторі (використовуючи go test)
LiteIDE
LiteIDE дуже незвичайний. Це був перший серйозний Go IDE, розпочатий ще у 2011/2012 році, і він все ще набирає сили. Ця програма C ++ Qt, і вона має власний зовнішній вигляд. Подібно до Gogland і Visual Studio Code, він використовує інструменти Go і налагоджувач Delve для надання мовних послуг (хоча він починався з налагоджувача gdb до того, як Delve був готовий).
В цілому, це повнофункціональна IDE, але вона не виглядає такою відточеною. Наскільки я можу судити, це значною мірою робота однієї людини, яка є екстраординарною. Ось розбиття функцій LiteIDE.
Основні особливості
- Управління системним середовищем
- Команда збірки, що настроюються.
- Проста та відкрита система налагодження (підтримує як gdb, так і Delve)
- Kate формат для автозаповнення та тематики
- Автозаповнення, що настроюється з WordApi
- Система на основі MIME-типу
- Підтримка плагінів
- Швидке відкриття
«Golang» - підтримка
- Пакетний браузер
- Клас перегляду та начерки
- Браузер документів
- Підтримка Gocode
- GOPATH API index
- Навігація за кодом
- Пошук використання
- Code Refactor
- Go playground
Додаткова підтримка
Wide
Wide представляє інтерес, тому що це виділене веб-середовище Golang. Він зосереджений на спільній розробці та призначений для команд. Розробник - китаєць, і більша частина документації китайською мовою, тому вона може не підходити для всіх. Він напевно не нарівні з іншими IDE з точки зору функцій та інтеграції.
Go плагіни для інших IDE
Існує багато універсальних середовищ розробки, що підтримують безліч мов програмування, а також додали підтримку мови Go. Я не великий шанувальник таких середовищ. Я вважаю, що інтегроване середовище має глибоко інтегровані мовні особливості.Це важко реалізувати як простий плагін (хоча ви можете стверджувати, що це саме те, що робить VS Code).
Деякі популярні середовища розробки, в яких додано підтримку Go:
Текстові редактори
Go це проста мова. Багато людей почуваються дуже продуктивно, просто використовуючи текстовий редактор, можливо, з деякими додатковими плагінами Go. Я не розглядаю їх як справді інтегровані середовища розробки. Але це має сенс, якщо у вас є багаторічний досвід роботи з текстовим редактором, ви вже налаштували його на свій смак і використовуєте його для багатьох інших завдань. Ось список деяких найбільш популярних текстових редакторів та їх плагінів Go:
Emacs
З наступними плагінами:
- go-mode
- GoFlyMake Синтаксис у стилі Flymake для Go
- go-errcheck.el Інтеграція з Errcheck для Emacs
Sublime Text
Vim та NeoVim
З безліччю плагінів Go.
Висновок
Go пройшов довгий шлях і має потужну екосистему, що включає множину варіантів середовища розробки. Відладчик Delve надає фантастичні можливості інтерактивного налагодження та використовується більшістю провідних IDE. Пограйте з цими IDE та знайдіть той, який підходить вам найбільше.
Правильна IDE може зробити роботу з Go ще цікавішою.