46

当我执行一个 Go 控制台程序时,它只会在一秒钟内执行,我一直在查看 Google、Go 网站和 Stackoverflow。

import (
    "fmt"
)

func main() {
    fmt.Println()
}

当我执行它时它会立即关闭。

编辑 2 实际上我希望程序永久暂停,直到用户按下按钮

4

4 回答 4

82

您可以使用 暂停程序任意长的时间time.Sleep()。例如:

package main
import ( "fmt"
         "time"
       )   

func main() {
  fmt.Println("Hello world!")
  duration := time.Second
  time.Sleep(duration)
}

要任意增加持续时间,您可以执行以下操作:

duration := time.Duration(10)*time.Second // Pause for 10 seconds

编辑:由于 OP 为问题添加了额外的限制,因此上面的答案不再符合要求。Enter您可以通过创建一个等待读取换行符 ( \n) 字符的新缓冲区读取器来暂停直到按键被按下。

package main
import ( "fmt"
         "bufio"
         "os"
       )

func main() {
  fmt.Println("Hello world!")
  fmt.Print("Press 'Enter' to continue...")
  bufio.NewReader(os.Stdin).ReadBytes('\n') 
}
于 2013-07-17T04:03:46.353 回答
23
package main

import "fmt"

func main() {
    fmt.Println("Press the Enter Key to terminate the console screen!")
    fmt.Scanln() // wait for Enter Key
}
于 2017-09-07T07:20:04.047 回答
15

导入最少的最简单的另一种方法是使用这 2 行:

var input string
fmt.Scanln(&input)

在程序末尾添加这一行,将暂停屏幕,直到用户按下 Enter 键,例如:

package main

import "fmt"

func main() {
    fmt.Println("Press the Enter Key to terminate the console screen!")
    var input string
    fmt.Scanln(&input)
}
于 2017-08-08T16:39:29.050 回答
0
import "fmt"

func main() {
    fmt.Scanln()
}

我只用fmt.Scanln了一条线。

于 2020-10-26T03:23:26.457 回答