go 语言相当于 scanf %[^\n]

go语言


fmt.Scanln("%s",&v)


这应该将整行存储为 v 变量中的字符串,对..?但是当我打印时,我只得到第一个单词,而空格之后的所有内容都没有被捕获。


繁花如伊
浏览 133回答 2
2回答

哈士奇WWW

Scan 系列函数扫描空格分隔的标记。如果您阅读fmt文档,就会很明显为什么您只会得到输入的第一个单词。Scan 扫描从标准输入读取的文本,将连续的空格分隔值存储到连续的参数中。换行符算作空格。它返回成功扫描的项目数。如果这小于参数的数量,则 err 将报告原因。bufio.Scan 是你需要的。// read standard input as a set of lines.scanner := bufio.NewScanner(os.Stdin)for scanner.Scan() {        fmt.Println(scanner.Text()) // Println will add back the final '\n'}if err := scanner.Err(); err != nil {        fmt.Fprintln(os.Stderr, "reading standard input:", err)}

开满天机

要阅读整行,您可以使用bufio包:package mainimport (    "bufio"    "fmt"    "os")func main() {    r := bufio.NewReader(os.Stdin)    str, _ := r.ReadString('\n')    fmt.Println(str)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go