想要“每月30个”,但要获得“ 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
Run Code Online (Sandbox Code Playgroud)
Scanln与Scan相似,但是在换行符处停止扫描,并且在最后一个项目之后必须有换行符或EOF。
fmt Scan系列扫描以空格分隔的令牌。
package main
import (
"fmt"
)
func main() {
var s1 string
var s2 string
fmt.Scanln(&s1,&s2)
fmt.Println(s1)
fmt.Println(s2)
return
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试bufio扫描
package main
import (
"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)
}
}
Run Code Online (Sandbox Code Playgroud)
如果你真的想包含空格,你可以考虑使用fmt.Scanf()with format %q a double-quoted string safely escaped with Go syntax,例如:
package main
import "fmt"
func main() {
var s string
fmt.Scanf("%q", &s)
fmt.Println(s)
return
}
Run Code Online (Sandbox Code Playgroud)
运行它并:
$ go run test.go
"31 of month"
31 of month
Run Code Online (Sandbox Code Playgroud)
这是工作程序
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
var strInput string
fmt.Println("Enter a string ")
scanner := bufio.NewScanner(os.Stdin)
if scanner.Scan() {
strInput = scanner.Text()
}
fmt.Println(strInput)
}
Run Code Online (Sandbox Code Playgroud)
它读取类似“d skd a efju N”的字符串并打印相同的字符串作为输出。