Does Go provide REPL?

前端 未结 12 522
[愿得一人]
[愿得一人] 2020-11-30 17:22

The interactive environment is VERY helpful for a programmer. However, it seems Go does not provide it. Is my understanding correct?

相关标签:
12条回答
  • 2020-11-30 17:45

    Please also check www.gorepl.com for go REPL and other REPLs

    0 讨论(0)
  • 2020-11-30 17:46

    No, but you can exploit the speed of compilation (as mentioned in other answers).

    Have a look at rango that uses a generate-compile-run loop to mimic a REPL. You can also start it with imports and statements to begin an interactive session.

    0 讨论(0)
  • 2020-11-30 17:48

    The GoSpeccy project includes a builtin REPL of a restricted subset of the Go language. The implementation is using goeval.

    0 讨论(0)
  • 2020-11-30 17:57

    I've had some luck with the VSCode debugger, but it's fairly limited in so far as you cannot invoke function calls from the debug console Debug: Function Calls not supported #2225.

    Basically you set a breakpoint after properly configuring your launch.json file. Then you can drill down on the left in the variables side bar and enter variable expressions an the debug console.

    0 讨论(0)
  • 2020-11-30 17:58

    No, Go does not provide a REPL.

    However, as already mentioned, Go Playground (this is the new URL) is very handy. The Go Authors are also thinking about adding a feature-rich editor to it.

    If you want something local, consider installing hsandbox. Running it simply with hsandbox go will split your terminal screen (with screen) where you can write code at the top and see its execution output at the bottom on every save.

    There was a gotry among standard Go commands, which used to evaluate expressions (with an optional package name), and could be run like gotry 1+2 and gotry fmt 'Println("hello")' from shell. It is no longer available because not many people actually used it.

    I have also seen third party projects for building a REPL for Go, but now I can only find links to two of them: igo and go-repl. How well do they work I don't know.

    My two cents: Speed of compilation makes writing a REPL possible for Go, as it has also helped building the tools mentioned here, but the same speed makes REPL less necessary. Every time I want to test something in Go that I can't run in Playground I open a simple .go file and start coding and simply run the code. This will be even easier when the go command in Go 1 makes one-command build process possible and way easier.

    UPDATE: Latest weekly release of Go added go command which can be used to very easily build a file: write your prog.go file and run go build prog.go && ./prog

    UPDATE 2: With Go 1 you can directly run go programs with go run filename.go

    UPDATE 3: gore is a new project which seems interesting.

    0 讨论(0)
  • 2020-11-30 17:58

    Gosh is the interactive Golang shell. The goal is to provide an easy-to-use interactive execution environment.

    https://github.com/mkouhei/gosh

    0 讨论(0)
提交回复
热议问题