Question
I would like to read standard input from the command line, but my attempts have ended with the program exiting before I'm prompted for input. I'm looking for the equivalent of [Console.ReadLine()](http://msdn.microsoft.com/en- us/library/system.console.readline%28v=vs.110%29.aspx) in C#.
This is what I currently have:
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)
}
Answer
I'm not sure what's wrong with the block
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, _ := reader.ReadString('\n')
fmt.Println(text)
As it works on my machine. However, for the next block you need a pointer to
the variables you're assigning the input to. Try replacing fmt.Scanln(text2)
with fmt.Scanln(&text2)
. Don't use Sscanln
, because it parses a string
already in memory instead of from stdin. If you want to do something like what
you were trying to do, replace it with fmt.Scanf("%s", &ln)
If this still doesn't work, your culprit might be some weird system settings or a buggy IDE.