2013-07-17 18 views
15

Quando eseguo un programma Go Console, eseguo solo in un secondo, ho cercato su Google, sul sito web Go e StackOverflow.Come aggiungere pause a un programma Go?

import (
    "fmt" 
) 

func main() { 
    fmt.Println() 
} 

Si chiude immediatamente quando lo eseguo.

EDIT 2 realtà volevo il programma di rimanere permanentemente in pausa fino a che l'utente preme un pulsante

risposta

36

È possibile mettere in pausa il programma per un lungo periodo di tempo arbitrariamente utilizzando time.Sleep(). Per esempio:

package main 
import ("fmt" 
     "time" 
     ) 

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

Per aumentare la durata arbitrariamente si può fare:

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

EDIT: Dal momento che l'OP ha aggiunto ulteriori vincoli alla domanda la risposta di cui sopra non è più adatta il disegno di legge. È possibile sospendere fino al Immettere il tasto mediante la creazione di un nuovo lettore di buffer che attende di leggere il carattere di fine riga (\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') 
} 
+0

ma quest'ultima solo per pochi secondi, voglio il programma per uscire quando si preme un tasto – Vaderman2782

+1

@Vade rman2782 Non l'hai menzionato nella domanda. Come avrebbe dovuto saperlo Mike? – Mostafa

+0

Oh scusa. fammi modificare ... – Vaderman2782

2

Il semplice altro modo con importazioni minime utilizzare questo 2 linee:

var input string 
fmt.Scanln(&input) 

aggiungendo questa riga al termine del programma, si fermerà lo schermo fino utente preme il tasto INVIO, per esempio:

package main 

import "fmt" 

func main() { 
    fmt.Println("Press the Enter Key to terminate the console screen!") 
    var input string 
    fmt.Scanln(&input) 
} 
0
package main 

import "fmt" 

func main() { 
    fmt.Println("Press the Enter Key to terminate the console screen!") 
    fmt.Scanln() // wait for Enter Key 
} 
+0

@BalagurunathanMarimuthu il singolo commento nel codice è tutta la spiegazione che è necessaria. Quello che trovo più discutibile è che questa è solo una versione ridotta della risposta esistente di Vas senza dare l'attribuzione. – Gimby

+0

Sory. Non potrei rispondere, poiché la reputazione è <50 e non conosco l'inglese) Commento ... Ok, ma ci sono molti commenti negli esempi rimanenti, dove sono sicuramente necessari? Sto usando il traduttore. – mukexa

Problemi correlati