猿问

golang 无限循环问题与 docker 运行

我试图做简单的无限循环任务。它工作正常,无需使用 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.9


RUN mkdir /app


ADD . /app


WORKDIR /app


RUN 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

http://img4.mukewang.com/62fa02500001556204630180.jpg

慕村9548890
浏览 148回答 2
2回答

呼唤远方

无限循环是因为您的 go 程序正在等待输入,并且您没有在交互模式下启动容器。要使其正常工作,您需要使用此命令(请注意该选项):-itdocker container run --rm --name hello -it hello

MMMHUHU

扫描返回错误。很可能没有读取任何数据并且是(因为这是 的零值)。i0int在没有数据的情况下将代码更改为死机:var i int_, err := fmt.Scan(&i)if err != nil {    panic(err)}围棋游乐场的行为方式与此类似。
随时随地看视频慕课网APP

相关分类

Go
我要回答