Comment lire l'entrée de la console de ligne?

Je voudrais lire l'entrée de la ligne de commande, mais mes tentatives ont terminé avec le programme de la sortie avant que je suis invité pour la saisie. Je suis à la recherche de l'équivalent de Console.ReadLine() en C#.

C'est ce que j'ai actuellement:

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Enter text: ")
    text, _ := reader.ReadString('\n')
    fmt.Println(text)

    fmt.Println("Enter text: ")
    text2 := ""
    fmt.Scanln(text2)
    fmt.Println(text2)

    ln := ""
    fmt.Sscanln("%v", ln)
    fmt.Println(ln)
}
  • Ce code semble correct. Par curiosité, vous êtes l'exécution de ce sur le terrain de jeu? La Aller de l'Aire de jeu ne permet pas d'entrée stdin en raison de la mise en réseau des raisons.
  • Je suis en cours d'exécution au niveau local.
  • Passons sur le fait, il semble être une subtile question où vous avez besoin d'un pointeur (voir ma réponse). Si je ne suis pas sûr de ce que le problème avec la bufio.NewReader méthode est depuis cela fonctionne pour moi.
  • double possible de Lire initiale stdin en ALLER?
  • Ne pas mélanger bufio de mise en mémoire tampon de tout lecteur (par exemple,bufio.NewReader(os.Stdin)) à diriger les lectures de l'soulignant lecteur (par exemple, fmt.Scanln(x) lit directement à partir de os.Stdin). Mise en mémoire tampon peut lire arbitrairement loin devant. (Dans ce cas précis, le plus tard doit être fmt.Fscanln(reader,x) à lire à partir de la même tampon).
  • Je n'ai pas fmt.Sscanln œuvres, il devient "%v" après l'exécution de

InformationsquelleAutor Dante | 2014-01-03