The Sscan
function in the Go programming language is used to read data from a source string of your choosing, format the string, and store the resultant space-separated values into the destinations specified by the additional arguments.
To use this function, you must import the fmt
package in your file and access the Sscan
function within, using the .
notation: fmt.Sscan
. Here, Sscan
is the actual function, while fmt
is the Go package that stores the definition of this function.
The definition of the Sscan
function inside the fmt
package is as follows:
fmt.Sscan
takes a reading source along with a list of a variable number of arguments.
src
: The source from where the input is to be taken. This should be an object of type string.
a ...interface{}
: The list of all arguments that you want to store data in. After taking in the input, the input string is automatically split on space characters. The components are stored sequentially into the given arguments. If there are fewer arguments than the different splits of the input string, then the extra pieces are discarded.
The fmt.Sscan
function can return two things:
count
: The number of arguments the function writes to.
err
: Any error thrown during the execution of the function.
The following example is a simple program where we read data from the variable message
of type string, store the space-separated parts into our desired variables, and then use the normal Print
function to print a new string, using these variables, to the standard output.
Sscan
reads from the input source sequentially. Hence, we must give the list of arguments in the order specified in the format string.
Here, we require an input with the specific format matching the sequence of arguments we have given the Sscan
function.
For example, with the first word being a string, the second can be anything since it is stored in temp
and is unused. The third can be an int
, and another string after that.
Here, we are using: “Faraz owns 500 acres of land”. We then use the Sscan
function to read this input and store parts of the string corresponding to the amount of land, units of measurement, and the owner’s name. We then used Printf
to print a new string:
package mainimport ("fmt")func main() {//assigning our buffer a messagemessage := "Faraz owns 500 acres of land"var name stringvar unit stringvar amount intvar temp string// taking input and storing in variable using the buffer stringfmt.Sscan(message, &name, &temp, &amount, &unit)// print out new string using the extracted valuesfmt.Printf ("% d %s of land is owned by %s\n",amount, unit, name);}
The following example is
the same as the one above, but shows how you can make use of the return values of the Sscan
function:
package mainimport ("fmt")func main() {//assigning our buffer a messagemessage := "Faraz owns 500 acres of land"var name stringvar unit stringvar amount intvar temp string// taking input and storing in variable using the buffer stringarg_count, error := fmt.Sscan(message, &name, &temp, &amount, &unit)// print out new string using the extracted valuesfmt.Printf ("%d %s of land is owned by %s\n",amount, unit, name);if error == nil {fmt.Print("Sscan executed without errors and wrote ",arg_count, " arguments")}}
Free Resources