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, который хорошо работает. Рекомендуется с редактированием строки, дополнением кода и многим другим.
У вас также есть недавний (март 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, компилирует, связывает и запускает программу в песочнице, а затем возвращает выходные данные.
Гоша это интерактивная оболочка Голанга. Цель состоит в том, чтобы предоставить простую в использовании интерактивную среду исполнения.
Нет, но вы можете использовать скорость компиляции (как указано в других ответах).
Взгляните на 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
. Отлично работает.