Handling stdin in Go: Difference between revisions
Jump to navigation
Jump to search
Line 4: | Line 4: | ||
* [[Go Package fmt|<tt>fmt</tt> Package]] | * [[Go Package fmt|<tt>fmt</tt> Package]] | ||
=Handling <tt>stdin</tt> with <tt>fmt</tt> Functions= | =Handling <tt>stdin</tt> with <tt>fmt</tt> Functions= | ||
When used to read strings, <code>fmt.Scan*</code> functions seem to want to tokenize the string and store fragments into different variables. | |||
==<tt>fmt.Scan()</tt>== | ==<tt>fmt.Scan()</tt>== | ||
{{External|https://golang.org/pkg/fmt/#Scan}} | {{External|https://golang.org/pkg/fmt/#Scan}} |
Revision as of 02:08, 23 August 2023
Internal
Handling stdin with fmt Functions
When used to read strings, fmt.Scan*
functions seem to want to tokenize the string and store fragments into different variables.
fmt.Scan()
Read text from stdin
. It stores successive space-separated values into successive arguments. Newlines count as space. It returns the number of items successfully scanned. If that is less than the number of arguments, err will report why.
var s string
cnt, err := fmt.Scan(&s)
fmt.Printf("input line: %s, cnt: %d, error: %s\n", s, cnt, err)
fmt.Scanln()
Scanln
is similar to Scan
, but stops scanning at a newline or EOF. It still uses space as separator, and stores space-separated fragments into successive arguments.
var line string
fmt.Scanln(&line)
fmt.Scanf()
var f float
cnt, err := fmt.Scanf("%f", &f)