Apakah Go menyediakan REPL?

200

Lingkungan interaktif SANGAT bermanfaat bagi seorang programmer. Namun, sepertinya Go tidak menyediakannya. Apakah pemahaman saya benar?

z_aksis
sumber

Jawaban:

164

Tidak, Go tidak menyediakan REPL.

Namun, seperti yang telah disebutkan, Go Playground (ini adalah URL baru) sangat berguna. Penulis Go juga berpikir tentang menambahkan editor kaya fitur untuk itu.

Jika Anda menginginkan sesuatu yang lokal, pertimbangkan untuk menginstal hsandbox . Menjalankannya hanya dengan hsandbox goakan membagi layar terminal Anda (denganscreen ) di mana Anda dapat menulis kode di bagian atas dan melihat output eksekusi di bagian bawah pada setiap penyimpanan.

Ada gotryperintah Go standar, yang digunakan untuk mengevaluasi ekspresi (dengan nama paket opsional), dan dapat dijalankan seperti gotry 1+2dan gotry fmt 'Println("hello")'dari shell. Ini tidak lagi tersedia karena tidak banyak orang yang menggunakannya.

Saya juga melihat proyek pihak ketiga untuk membangun REPL for Go, tapi sekarang saya hanya dapat menemukan tautan ke dua di antaranya: igo dan go-repl . Seberapa baik mereka bekerja saya tidak tahu.

Dua sen saya: Kecepatan kompilasi membuat penulisan REPL menjadi mungkin untuk Go, karena juga membantu membangun alat yang disebutkan di sini, tetapi kecepatan yang sama membuat REPL kurang perlu. Setiap kali saya ingin menguji sesuatu di Go yang saya tidak bisa jalankan di Playground, saya membuka .gofile sederhana dan mulai coding dan cukup menjalankan kode. Ini akan menjadi lebih mudah ketika goperintah di Go 1 membuat proses pembuatan satu perintah menjadi mungkin dan jauh lebih mudah.

PEMBARUAN: Rilis goperintah Go ditambahkan mingguan terbaru yang dapat digunakan untuk membangun file dengan sangat mudah: tulis prog.gofile Anda dan jalankango build prog.go && ./prog

UPDATE 2 : Dengan Go 1 Anda dapat langsung menjalankan program gogo run filename.go

UPDATE 3 : goreadalah proyek baru yang tampaknya menarik.

Mostafa
sumber
TL; DR igo Lainnya: Gore sangat tidak nyaman karena membutuhkan tempel dan Ctrl-D. Sesuatu seperti Reinteract for Go akan menakjubkan.
4
Tampaknya ada dua proyek REPL yang disebut "gore". Yang ini lebih aktif dipertahankan daripada yang ada di jawaban: github.com/motemen/gore
Bijan
1
Ha, saya baru saja memposting hal yang sama. Saya baru saja bermain dengan motemen/goresana - itu cukup bagus.
Darragh Enright
github.com/motemen/gore gore cukup bagus dan mudah digunakan.
Junv
56

Coba motemen / gore

Namun Go REPL lain yang bekerja dengan baik. Ditampilkan dengan pengeditan baris, penyelesaian kode, dan banyak lagi.

https://github.com/motemen/gore

masukkan deskripsi gambar di sini

Bijan
sumber
8

Anda juga memiliki proyek baru-baru ini (Maret 2013) yang disebut gore dari Sriram Srinivasan , yang dapat berguna:

gore adalah evaluator baris perintah untuk kode golang - REPL tanpa loop, jika Anda mau.
Ini adalah pengganti untuk taman bermain go, sementara membuatnya lebih mudah untuk secara interaktif mencoba bit kode: gore secara otomatis memasok kode boiler-plate seperti impor dan deklarasi paket dan pembungkus fungsi utama .
Juga, karena ini berjalan di komputer Anda sendiri, tidak ada kode yang ditolak dengan alasan keamanan (tidak seperti mode kotak pasir aman taman bermain).

VONC
sumber
7

Sudahkah Anda mencoba Go Playground ?

Tentang Go Playground

Go Playground adalah layanan web yang berjalan di server golang.org. Layanan menerima program Go, mengkompilasi, menghubungkan, dan menjalankan program di dalam kotak pasir, lalu mengembalikan hasilnya.

peterSO
sumber
4

Jika Anda adalah pengguna Vim, plugin vim-go ( https://github.com/fatih/vim-go ) menyediakan perintah (GoRun) untuk menjalankan dan mencetak output dari buffer saat ini. Anda masih harus memasukkan semua kode boilerplate dari file Go utama, tetapi masih memberikan cara mudah untuk dengan cepat menguji potongan kode di lingkungan lokal Anda.

masukkan deskripsi gambar di sini

HTH

Patrick Canfield
sumber
bagaimana bisa membuat keluaran GoRun di buffer。my vim saat ini, menampilkannya di shell
vagabond
vim-jalan terus! Namun, untuk mengambil langkah ini lebih jauh saya akan menghapus kode pelat ketel, masukkan 'package_test.go' saya di buffer split & terus memalu: GoTest &: GoCoverage. 2 sen saya ...
rolandvarga
3

Proyek GoSpeccy mencakup REPL bawaan dari subset terbatas dari bahasa Go. Implementasinya menggunakan goeval .


sumber
2

Tidak, tetapi Anda dapat mengeksploitasi kecepatan kompilasi (sebagaimana disebutkan dalam jawaban lain).

Lihatlah rango yang menggunakan loop generate-compile-run untuk meniru REPL. Anda juga dapat memulainya dengan impor dan pernyataan untuk memulai sesi interaktif.

emicklei
sumber
2

Saya sudah beruntung dengan debugger VSCode, tapi itu cukup terbatas sejauh Anda tidak dapat memanggil panggilan fungsi dari konsol debug Debug: Panggilan Fungsi tidak didukung # 2225 .

Pada dasarnya Anda menetapkan breakpoint setelah mengkonfigurasi launch.jsonfile Anda dengan benar . Kemudian Anda dapat menelusuri di sebelah kiri di bilah sisi variabel dan memasukkan ekspresi variabel di konsol debug. Melakukan debug file dalam VSCode untuk introspeksi melalui debugger

jxramos
sumber
0

Anda juga dapat mencoba https://github.com/haya14busa/goplay Ini memungkinkan Anda untuk menjalankan file kode go dari terminal Anda langsung ke Go Playground

Montaro
sumber
0

Kode Go dapat dijalankan dengan cara seperti REPL di Visual Studio Code dengan ekstensi Go dan ekstensi Code Runner. Klik Jalankan segitiga ▶ yang ditandai oleh kursor mouse di tangkapan layar di bawah untuk menjalankan kode dan tampilkan hasilnya di panel Output di bagian bawah Visual Studio Code.

Ketika pemrograman dengan Go Visual Studio Code akan menyarankan ekstensi Go tambahan yang dapat diinstal untuk memperluas fungsionalitas Visual Studio Code.

Pergi berjalan di Visual Studio Code

karel
sumber