我在使用GoLand的调试器获取尝试从stdin
读取的一段代码时遇到问题。例如,以下代码:
package main
import (
"io"
"os"
"strings"
)
func main() {
io.Copy(os.Stdout, strings.NewReader("Start typing now...\n"))
io.Copy(os.Stdout, os.Stdin)
}
当我从GoLand中run
进行完美执行时,控制台窗口会正确收集输入。但是,当我使用debug
命令时-我可以看到我的输入出现在控制台窗口中,但是enter键不会结束输入字符串,而是将光标移至下一行。
我的版本:
GoLand 2018.2.2
Build #GO-182.4129.57, built on August 23, 2018
JRE: 1.8.0_152-release-1248-b8 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.13.6
答案 0 :(得分:2)
在使用OSX时,没有简单的方法可以使它正常工作。
假设您使用的是Go 1.10或更高版本,请将目录更改为$GOPATH/src/github.com/user/package
,然后使用go build -gcflags "all=-N -l" github.com/user/package
编译应用程序,然后在Terminal中手动启动应用程序。应用程序运行后,转到Run | Attach to Process...
,然后从列表中选择应用程序。这会将调试器附加到正在运行的应用程序。
请注意,为了改善调试体验,需要执行编译步骤,但由于(几乎)所有优化都已关闭,因此不应在生产环境中使用生成的二进制文件。