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

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

13 ответов

Решение

Нет, 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 это новый проект, который кажется интересным.

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

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

https://github.com/motemen/gore

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

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

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

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

НТН

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

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

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

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

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

https://github.com/mkouhei/gosh

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

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

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

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

Пожалуйста, также проверьте http://www.gorepl.com/ для go REPL и других REPL

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

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

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

16-строчный REPL Go Scriptable, написанный на Bash для Linux:

Это НЕ откроет REPL, но вы можете использовать его как скриптовый REPL/среду выполнения, как вы можете с помощью ,python3, ,deno,bash, и т. д.

      #! /usr/bin/env bash

if [[ $(cat $1 2> /dev/null) == "" ]]; then
  SCRIPT_P_FNAME=$2
  GORUN_ARGS=$1
  shift 2
else
  SCRIPT_P_FNAME=$1
  shift 
fi

cat ${SCRIPT_P_FNAME} | sed '/^#!/d' > wubbalubbadubdub.go

go run wubbalubbadubdub.go $@

rm wubbalubbadubdub.go

Сохраните это как/usr/bin/gorunи дайте ему права на исполняемый файл, используя:

      sudo chmod ugo+x /usr/bin/gorun

Вы можете расширить, чтобы принимать аргументы в строке shebang с приведенной выше конфигурацией. Это аргументы будут в$GORUN_ARGSесли бы ты их прошел.

Если вы используете шебанг-линию#! /usr/bin/env gorunэто будет работать, но любые аргументы, переданные в этой строке shebag, перейдут вenvвместо , что, вероятно, не то, что вам нужно, если только вы вообще не хотите передавать аргументы.

Ваш Go-скрипт с строкой Shebang:

      #! /usr/bin/gorun

package main

import "fmt"
import "os"
import "strings"

func main() {
    fmt.Println(`Hello World`)
    fmt.Println(strings.Join(os.Args[1:], ","))
}

Сохраните это какindex.go, например. Содержимое этого скрипта просто демонстрирует возможность анализа аргументов, передаваемых ему через CLI.

Запустите скрипт Go через CLI (вариант 1):

      ./index.go arg1 arg2 arg3

Запустите Go Script через CLI (вариант 2):

      gorun index.go arg1 arg2 arg3

Прежде чем построить его, вам придется удалить линию шебанга. Возможно, напишите еще один подобный CLI под названиемgobuildэто делает то же самое, что иgorun, кроме замены наgo build.

Честно говоря, я не знаю, почему Go не имеет встроенного REPL или по умолчанию не учитывает строку shebang, как и все другие среды выполнения.

Я думаю, они действительно не хотят, чтобы вы писали сценарии Go, поскольку он задуман как компилируемый язык. Ну, это меняет ситуацию, лол.

Кстати, вы можете сделать что-то подобное и для других скомпилированных языков, просто Go — хороший кандидат для этого, посколькуgo runпо умолчанию выполняется довольно быстро из-за ограничений, налагаемых на формат языка.

Если вы не знали, вы можете писать сценарии таким же образом, как показано выше, с использованием других сред выполнения, таких какnode,pythonи т. д. и выполните их теми же двумя способами, как показано выше, при условии, что вы соответствующим образом измените строку shebang. Эти среды выполнения по умолчанию учитывают строку shebang. Например, вы можете использовать#! /usr/bin/env nodeв сценарии NodeJS и запустите его с помощью./index.jsилиnode index.js. Отлично работает.

Другие вопросы по тегам