Go предоставляет REPL?

200

Интерактивная среда очень полезна для программиста. Однако, похоже, Го этого не предоставляет. Правильно ли мое понимание?

z_axis
источник

Ответы:

164

Нет, Go не предоставляет REPL.

Однако, как уже упоминалось, Go Playground (это новый URL) очень удобен. Авторы Go также думают о добавлении в него многофункционального редактора.

Если вы хотите что-то локальное, подумайте об установке hsandbox . Запустив его просто с помощью, hsandbox goвы разделите экран терминала (с screen), где вы сможете написать код вверху и увидеть результат его выполнения внизу при каждом сохранении.

gotryСреди стандартных команд Go была одна , которая использовалась для оценки выражений (с необязательным именем пакета) и могла запускаться как gotry 1+2и gotry fmt 'Println("hello")'из оболочки. Это больше не доступно, потому что не много людей фактически использовали это.

Я также видел сторонние проекты по созданию REPL для Go, но теперь я могу найти ссылки только на два из них: igo и go-repl . Насколько хорошо они работают, я не знаю.

Мои два цента: скорость компиляции делает возможным написание REPL для Go, так как это также помогло создать инструменты, упомянутые здесь, но та же скорость делает REPL менее необходимой. Каждый раз, когда я хочу проверить в Go что-то, что не могу запустить в Playground, я открываю простой .goфайл, начинаю кодировать и просто запускаю код. Это будет еще проще, когда goкоманда в Go 1 делает процесс сборки одной командой возможным и намного проще.

ОБНОВЛЕНИЕ: последний еженедельный выпуск команды Go, goкоторая может быть использована для очень простого создания файла: напишите свой prog.goфайл и запуститеgo build prog.go && ./prog

ОБНОВЛЕНИЕ 2 : с Go 1 вы можете напрямую запускать программы go сgo run filename.go

ОБНОВЛЕНИЕ 3 : goreэто новый проект, который кажется интересным.

Мостафа
источник
TL; DR igo Прочее: Гор не очень удобен, так как требует вставки и Ctrl-D. Что-то вроде Reinteract for Go было бы потрясающим соусом.
4
Кажется, есть два проекта REPL под названием "Гор". Этот более активно поддерживается, чем в ответе: github.com/motemen/gore
Биджан
1
Ха, я как раз собирался опубликовать то же самое. Я только что играл motemen/goreтам - это очень хорошо.
Дарра Энрайт
github.com/motemen/gore Gore довольно хорош и прост в использовании.
Junv
56

Попробуй Мотемен / Гора

Еще один Go REPL, который хорошо работает. Рекомендуется с редактированием строки, дополнением кода и многим другим.

https://github.com/motemen/gore

введите описание изображения здесь

Bijan
источник
8

У вас также есть недавний (март 2013) проект под названием Gore от Sriram Srinivasan , который может быть полезен:

gore - это анализатор командной строки для кода golang - REPL без цикла, если хотите.
Он заменяет игровую площадку go, облегчая при этом интерактивную проверку фрагментов кода: gore автоматически предоставляет стандартный код, такой как объявления импорта и пакета, а также упаковщик основной функции .
Кроме того, поскольку он запускается на вашем собственном компьютере, ни один код не отклоняется по соображениям безопасности (в отличие от безопасного режима песочницы на детской площадке).

VonC
источник
7

Вы пробовали Go Playground ?

О игровой площадке Go

Go Playground - это веб-сервис, который работает на серверах golang.org. Служба получает программу Go, компилирует, связывает и запускает программу в песочнице, а затем возвращает выходные данные.

peterSO
источник
4

Если вы пользователь Vim, плагин vim-go ( https://github.com/fatih/vim-go ) предоставляет команду (GoRun) для запуска и печати выходных данных текущего буфера. Вам все еще нужно включить весь стандартный код основного файла Go, но он по-прежнему обеспечивает удобный способ быстрого тестирования фрагментов кода в вашей локальной среде.

введите описание изображения здесь

НТН

Патрик Кэнфилд
источник
как сделать вывод GoRun в текущем буфере? мой vim, отобразить это в оболочке
vagabond
Vim-Go весь путь! Однако, чтобы продвинуться дальше, я бы удалил код пластины котла, поместил мой package_test.go в буфер разделения и продолжил: GoTest &: GoCoverage. Мои 2 цента ...
Роландварга
3

Проект GoSpeccy включает встроенный REPL ограниченного подмножества языка Go. Реализация использует goeval .


источник
2

Нет, но вы можете использовать скорость компиляции (как указано в других ответах).

Взгляните на rango, который использует цикл generate-compile-run для имитации REPL. Вы также можете начать с импорта и операторов, чтобы начать интерактивный сеанс.

emicklei
источник
2

Мне повезло с отладчиком VSCode, но он довольно ограничен, поскольку вы не можете вызывать вызовы функций из консоли отладки. Отладка: вызовы функций не поддерживаются # 2225 .

В основном вы устанавливаете точку останова после правильной настройки вашего launch.jsonфайла. Затем вы можете углубиться в левую часть боковой панели переменных и ввести выражения переменных в консоли отладки. Отладка файла go в VSCode для самоанализ через отладчик

jxramos
источник
1

Гоша это интерактивная оболочка Голанга. Цель состоит в том, чтобы предоставить простую в использовании интерактивную среду исполнения.

https://github.com/mkouhei/gosh

raittes
источник
0

Вы также можете попробовать https://github.com/haya14busa/goplay. Это позволит вам запускать файлы go-кода со своего терминала прямо на игровую площадку Go.

Montaro
источник
0

Код Go может быть выполнен в формате REPL в коде Visual Studio с расширением Go и расширением Code Runner. Щелкните треугольник «Выполнить», который отмечен курсором мыши на приведенном ниже снимке экрана, чтобы запустить код и отобразить результаты на панели «Вывод» в нижней части кода Visual Studio.

При программировании с использованием Go Visual Studio Code предложит дополнительные расширения Go, которые можно установить для расширения функциональности Visual Studio Code.

Начните работать в Visual Studio Code

Карел
источник