为了账号安全,请及时绑定邮箱和手机立即绑定

golang 无限循环问题与 docker 运行

golang 无限循环问题与 docker 运行

Go
慕村9548890 2022-08-15 16:21:53
我试图做简单的无限循环任务。它工作正常,无需使用 docker。但是当我使用docker时,它只无限执行for循环的other部分。实际上可能有什么问题?Docker 在无限 for 循环方面有问题吗?我的main.go文件如下所示。package main import ("bufio""fmt""os" )func main() { fmt.Println("Hello, World!.....") for {    fmt.Print("-> ")    var i int    fmt.Scan(&i)    if i == 1 {        fmt.Println("Hello, World! 1")    } else if i == 2 {        fmt.Println("Hello, World! 2")    } else if i == 3 {        fmt.Println("Hello, World! 3")    } else if i == 4 {        fmt.Println("Hello, World! 4")    } else if i == 5 {        fmt.Println("Hello, World! 5")    } else {        fmt.Println("Hello, World! else")            } }}我也尝试了这些链接。在golang中阅读行 我如何在Golang中打破无限循环但仍然没有用处。从昨天开始,我正在努力解决这个问题。docker 文件如下所示:FROM golang:1.12.0-alpine3.9RUN mkdir /appADD . /appWORKDIR /appRUN go build -o main .CMD ["go","run","/app/main.go"]我尝试使用 docker build -t hello 来构建 docker,并使用docker run hello与docker run hello使用控制台执行,无需 Dockergo run main.go
查看完整描述

2 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

无限循环是因为您的 go 程序正在等待输入,并且您没有在交互模式下启动容器。

要使其正常工作,您需要使用此命令(请注意该选项):-it

docker container run --rm --name hello -it hello



查看完整回答
反对 回复 2022-08-15
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

扫描返回错误。很可能没有读取任何数据并且是(因为这是 的零值)。i0int


在没有数据的情况下将代码更改为死机:


var i int

_, err := fmt.Scan(&i)

if err != nil {

    panic(err)

}

围棋游乐场的行为方式与此类似。


查看完整回答
反对 回复 2022-08-15
  • 2 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信