Czy Go zapewnia REPL?

200

Interaktywne środowisko jest BARDZO pomocne dla programisty. Wydaje się jednak, że Go tego nie zapewnia. Czy moje rozumowanie jest prawidłowe?

z_axis
źródło

Odpowiedzi:

164

Nie, Go nie zapewnia REPL.

Jednak, jak już wspomniano, Go Playground (jest to nowy adres URL) jest bardzo przydatny. Autorzy Go również myślą o dodaniu do niego edytora bogatego w funkcje.

Jeśli chcesz czegoś lokalnego, rozważ zainstalowanie hsandbox . Uruchomienie go po prostu hsandbox gospowoduje podzielenie ekranu terminala (z screen), w którym można pisać kod u góry i zobaczyć wyniki jego wykonywania u dołu przy każdym zapisie.

Było gotrywśród standardowych poleceń Idź, które stosowane do oceny wyrażeń (z opcjonalną nazwą pakietu), i może być prowadzone jak gotry 1+2i gotry fmt 'Println("hello")'ze skorupy. Nie jest już dostępny, ponieważ niewiele osób faktycznie z niego korzystało.

Widziałem także projekty stron trzecich dotyczące budowy REPL dla Go, ale teraz mogę znaleźć tylko linki do dwóch z nich: igo i go-repl . Jak dobrze działają, nie wiem.

Moje dwa centy: Szybkość kompilacji sprawia, że ​​pisanie REPL jest możliwe dla Go, ponieważ pomogło to również w budowie wymienionych tu narzędzi, ale ta sama prędkość sprawia, że ​​REPL jest mniej potrzebny. Za każdym razem, gdy chcę przetestować w Go coś, czego nie mogę uruchomić w Playground, otwieram prosty .goplik i zaczynam kodować i po prostu uruchomić kod. Będzie to jeszcze łatwiejsze, gdy gopolecenie w Go 1 umożliwi proces kompilacji jednym poleceniem i będzie łatwiejsze.

AKTUALIZACJA: Najnowsze cotygodniowe wydanie gopolecenia Go dodane, którego można użyć do bardzo łatwego zbudowania pliku: napisz prog.goplik i uruchomgo build prog.go && ./prog

AKTUALIZACJA 2 : Dzięki Go 1 możesz bezpośrednio uruchamiać programy go za pomocągo run filename.go

AKTUALIZACJA 3 : goreto nowy projekt, który wydaje się interesujący.

Mostafa
źródło
TL; DR igo Inni: Gore nie jest zbyt wygodny, ponieważ wymaga wklejenia i Ctrl-D. Coś w rodzaju Reinteract for Go byłoby niesamowite.
4
Wydaje się, że istnieją dwa projekty REPL zwane „gore”. Ten jest aktywniej utrzymywany niż ten w odpowiedzi: github.com/motemen/gore
Bijan
1
Ha, właśnie miałem opublikować to samo. Właśnie się motemen/goretam bawiłem - jest całkiem niezły.
Darragh Enright
github.com/motemen/gore gore jest całkiem dobry i prosty w użyciu.
Junv
56

Spróbuj motemen / gore

Jeszcze jedna Go REPL, która działa dobrze. Polecane z edycją linii, uzupełnianiem kodu i nie tylko.

https://github.com/motemen/gore

wprowadź opis zdjęcia tutaj

Bijan
źródło
8

Masz również najnowszy (marzec 2013 r.) Projekt o nazwie gore z Sriram Srinivasan , który może być przydatny:

gore to ewaluator wiersza poleceń dla kodu golang - REPL bez pętli, jeśli wolisz.
Jest to zamiennik dla placu zabaw, a jednocześnie znacznie ułatwia interaktywne wypróbowanie fragmentów kodu: gore automatycznie dostarcza kod płyty kotłowej, taki jak deklaracje importu i paczki oraz opakowanie funkcji głównej .
Ponadto, ponieważ działa na twoim komputerze, żaden kod nie jest odrzucany ze względów bezpieczeństwa (w przeciwieństwie do bezpiecznego trybu piaskownicy na placu zabaw).

VonC
źródło
7

Czy wypróbowałeś Go Playground ?

O Go Playground

Go Playground to usługa internetowa działająca na serwerach golang.org. Usługa odbiera program Go, kompiluje, łączy i uruchamia program w piaskownicy, a następnie zwraca dane wyjściowe.

peterSO
źródło
4

Jeśli jesteś użytkownikiem Vima, wtyczka vim-go ( https://github.com/fatih/vim-go ) udostępnia polecenie (GoRun) do uruchomienia i wydrukowania danych wyjściowych bieżącego bufora. Nadal musisz dołączyć cały główny kod głównego pliku Go, ale nadal zapewnia wygodny sposób szybkiego testowania fragmentów kodu w lokalnym środowisku.

wprowadź opis zdjęcia tutaj

HTH

Patrick Canfield
źródło
jak zrobić wyjście GoRun w bieżącym buforze。 mój vim, wyświetl to w powłoce
vagabond
vim-go przez całą drogę! Jednak, aby pójść o krok dalej, usunęłbym kod płyty kotła, umieściłem mój „package_test.go” w podzielonym buforze i kontynuowałem wbijanie: GoTest i: GoCoverage. Moje 2 centy ...
rolandvarga
3

Projekt GoSpeccy zawiera wbudowaną REPL ograniczonego podzbioru języka Go. Implementacja używa goeval .


źródło
2

Nie, ale możesz wykorzystać szybkość kompilacji (jak wspomniano w innych odpowiedziach).

Spójrz na rango, które wykorzystuje pętlę generowania-kompilacji do naśladowania REPL. Możesz także rozpocząć od importu i instrukcji, aby rozpocząć interaktywną sesję.

emicklei
źródło
2

Miałem trochę szczęścia z debuggerem VSCode, ale jest dość ograniczony, o ile nie można wywoływać wywołań funkcji z konsoli debugowania Debugowanie: Połączenia funkcji nie są obsługiwane # 2225 .

Zasadniczo ustawiasz punkt przerwania po prawidłowej konfiguracji launch.jsonpliku. Następnie możesz przejść do lewej strony paska bocznego zmiennych i wprowadzić wyrażenia zmiennych w konsoli debugowania. Debugowanie pliku go w VSCode w celu introspekcji poprzez debugger

jxramos
źródło
0

Kod Go może być uruchamiany w sposób podobny do REPL w Visual Studio Code z rozszerzeniem Go i Code Runner. Kliknij przycisk Uruchom trójkąt ▶, który jest zaznaczony kursorem myszy na poniższym zrzucie ekranu, aby uruchomić kod i wyświetlić wyniki w okienku Wyjście na dole Visual Studio Code.

Podczas programowania za pomocą Go Visual Studio Code zasugeruje dodatkowe rozszerzenia Go, które można zainstalować w celu rozszerzenia funkcjonalności Visual Studio Code.

Uruchom program Visual Studio Code

Karel
źródło