From cf88f285198e7f6ab19db592eeda4dcbfbb2909b Mon Sep 17 00:00:00 2001 From: qinyuguang Date: Mon, 3 Aug 2020 21:00:02 +0800 Subject: [PATCH] gcmd.Scanf supports read line that contains whitespace --- os/gcmd/gcmd_scan.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/os/gcmd/gcmd_scan.go b/os/gcmd/gcmd_scan.go index c2c528a68..492c668f0 100644 --- a/os/gcmd/gcmd_scan.go +++ b/os/gcmd/gcmd_scan.go @@ -17,18 +17,20 @@ import ( // Scan prints to stdout, reads and returns user input, which stops by '\n'. func Scan(info ...interface{}) string { - var s string fmt.Print(info...) + return readline() +} + +// Scanf prints to stdout with , reads and returns user input, which stops by '\n'. +func Scanf(format string, info ...interface{}) string { + fmt.Printf(format, info...) + return readline() +} + +func readline() string { + var s string reader := bufio.NewReader(os.Stdin) s, _ = reader.ReadString('\n') s = gstr.Trim(s) return s } - -// Scanf prints to stdout with , reads and returns user input, which stops by '\n'. -func Scanf(format string, info ...interface{}) string { - var s string - fmt.Printf(format, info...) - fmt.Scanln(&s) - return s -}