golang接受空格输入

ca1c2owp  于 2023-09-28  发布在  Go
关注(0)|答案(4)|浏览(101)

我刚开始学习GO,我知道SCANF在GO中使用空格作为分隔符。

fmt.Scanf("%s",&input)

我真的找不到一种方法来接受包含空格的输入作为有效字符。

z4iuyo4d

z4iuyo4d1#

你可以使用bufio.Reader和os.Stdin:

import(
  "bufio"
  "os"
)

in := bufio.NewReader(os.Stdin)

line, err := in.ReadString('\n')
o4tp2gmn

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)
}
bxgwgixi

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)
}
krugob8w

krugob8w4#

当用户按下回车键时,表示输入结束
看起来像fmt.Scanln
Scanln类似于Scan,但在换行处停止扫描,并且在最后一个项目之后必须有一个换行或EOF。

相关问题