我刚开始学习GO,我知道SCANF在GO中使用空格作为分隔符。
fmt.Scanf("%s",&input)
我真的找不到一种方法来接受包含空格的输入作为有效字符。
z4iuyo4d1#
你可以使用bufio.Reader和os.Stdin:
import( "bufio" "os" ) in := bufio.NewReader(os.Stdin) line, err := in.ReadString('\n')
o4tp2gmn2#
与@chlin的答案类似,使用bufio捕获整行。fmt Scan方法将每个空格分隔的值存储到连续的参数中。stdin上的三个参数需要如下内容:
package main import "fmt" func main() { var day, year int var month string fmt.Scanf("%d %s %d", &day, &month, &year) fmt.Printf("captured: %d %s %d\n", day, month, year) }
如果你不知道你将要阅读的内容的完整格式,而只是想要一行,使用bufio:
package main import ( "bufio" "os" ) func main(){ scanner := bufio.NewScanner(os.Stdin) scanner.Scan() // use `for scanner.Scan()` to keep reading line := scanner.Text() fmt.Println("captured:",line) }
bxgwgixi3#
当使用ReadString('\n')时,它读取直到并包括换行符。如果要从输入字符串中删除此尾随换行符,可以使用strings.TrimSpace函数。
package main import ( "bufio" "fmt" "os" "strings" ) func main() { reader := bufio.NewReader(os.Stdin) fmt.Print("Please enter a string: ") text, _ := reader.ReadString('\n') text = strings.TrimSpace(text) // Remove any surrounding whitespace including the newline. fmt.Printf("You entered: %s", text) }
krugob8w4#
当用户按下回车键时,表示输入结束看起来像fmt.ScanlnScanln类似于Scan,但在换行处停止扫描,并且在最后一个项目之后必须有一个换行或EOF。
fmt.Scanln
Scanln
Scan
4条答案
按热度按时间z4iuyo4d1#
你可以使用bufio.Reader和os.Stdin:
o4tp2gmn2#
与@chlin的答案类似,使用bufio捕获整行。
fmt Scan方法将每个空格分隔的值存储到连续的参数中。stdin上的三个参数需要如下内容:
如果你不知道你将要阅读的内容的完整格式,而只是想要一行,使用bufio:
bxgwgixi3#
当使用ReadString('\n')时,它读取直到并包括换行符。如果要从输入字符串中删除此尾随换行符,可以使用strings.TrimSpace函数。
krugob8w4#
当用户按下回车键时,表示输入结束
看起来像
fmt.Scanln
Scanln
类似于Scan
,但在换行处停止扫描,并且在最后一个项目之后必须有一个换行或EOF。