続きです。
REPLとは
こちらの記事を参照してください。
Goで実装する
main.go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
cmd:
for {
fmt.Print("go> ")
if !scanner.Scan() {
break
}
prompt := scanner.Text()
switch prompt {
case "exit":
fmt.Println("Bye!")
break cmd
default:
fmt.Println(prompt)
}
}
}
実行する
$ go mod edit -module=example.com/app
$ go build
$ ./app
go> 1 + 1
1 + 1
go> foobar
foobar
go> baz
baz
go> exit
Bye!
CTRL-CやCTRL-Dの処理を実装しておけばよかったかも。