猿问

如何使用 fmt.scanln 从以空格分隔的字符串中读取

想要“30 of month”但得到“30”


package main


import "fmt"


func main() {

    var s string

    fmt.Scanln(&s)

    fmt.Println(s)

    return

}


$ go run test.go

31 of month

31

Scanln 类似于 Scan,但在换行符处停止扫描,并且在最后一项之后必须有一个换行符或 EOF。


达令说
浏览 303回答 3
3回答

猛跑小猪

fmt Scan 系列扫描空格分隔的令牌。package mainimport (    "fmt")func main() {    var s1 string    var s2 string    fmt.Scanln(&s1,&s2)    fmt.Println(s1)    fmt.Println(s2)    return}你可以试试 bufio 扫描package mainimport (    "bufio"    "fmt"    "os")func main() {    scanner := bufio.NewScanner(os.Stdin)    for scanner.Scan() {        s := scanner.Text()        fmt.Println(s)    }    if err := scanner.Err(); err != nil {        os.Exit(1)    }}

慕哥9229398

如果你真的想包含空格,你可以考虑使用fmt.Scanf()with format %q  a double-quoted string safely escaped with Go syntax,例如:package mainimport "fmt"func main() {    var s string    fmt.Scanf("%q", &s)    fmt.Println(s)    return}运行它并:$ go run test.go"31 of month"31 of month

守候你守候我

这是工作程序package mainimport (    "bufio"    "fmt"    "os"    "strings")func main() {    var strInput, strInputLowerCase string    var bFindI, bFindN, bFindA bool    fmt.Println("Enter a string ")    scanner := bufio.NewScanner(os.Stdin)    if scanner.Scan() {        strInput = scanner.Text()    }    fmt.Println(strInput)}它读取像“d skd a efju N”这样的字符串并打印相同的字符串作为输出。
随时随地看视频慕课网APP

相关分类

Go
我要回答