Want "30 of month" but get "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 is similar to Scan, but stops scanning at a newline and after the final item there must be a newline or EOF.
The fmt Scan family scan space-separated tokens.
package main
import (
"fmt"
)
func main() {
var s1 string
var s2 string
fmt.Scanln(&s1,&s2)
fmt.Println(s1)
fmt.Println(s2)
return
}
You can try bufio scan
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)
}
}
If you really want to include the spaces, you may consider using fmt.Scanf()
with format %q a double-quoted string safely escaped with Go syntax
, for example:
package main
import "fmt"
func main() {
var s string
fmt.Scanf("%q", &s)
fmt.Println(s)
return
}
Run it and:
$ go run test.go
"31 of month"
31 of month
Here is the working program
package main
import (
"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)
}
which reads strings like " d skd a efju N"
and prints the same string as output.