In the Go programming language, the Sscanf
function is used to read data from a source string of your choosing, format it into a string, and store the resultant space-separated strings into the destinations specified by a list of additional arguments you provide. It differs from the simple Sscan
function as it supports custom format specifiers and uses a format string to format the output string. In contrast, in Sscan
, only default formats are used to format the string.
To use this function, you must import the fmt
package in your file and access the Sscanf
function within, using the .
notation: fmt.Sscanf
. Here Sscanf
is the actual function, while fmt
is the Go package that stores the definition of this function.
The definition of the Sscanf
function inside the fmt
package is as follows:
The fmt.Sscanf
function takes 3 parameters as described below:
src
: The source from where the input is to be taken. This should be an object of type string
format
: This argument is of type string and represents the string containing custom specifiers that the Sscanf
uses to format the final output 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 following is a table of the most commonly used format specifiers in Go and their descriptions.
Specifiers | Description |
---|---|
%s |
To print a string |
%d |
To print an integer |
%v |
To print values of all elements in a structure |
%+v |
To print the names and values of all elements in a structure |
The fmt.Sscanf
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 first initialize a variable with a. We then read from it, store it into our desired variables, and use the Printf
function to print a new string to the standard output.
Sscanf
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 Sscanf
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 the string: “Faraz owns 500 acres of land”. We then use the Sscanf
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 use Printf
to print a new string.
package mainimport ("fmt")func main() {//assigning our buffer a messagevar src_buff = "Faraz owns 500 acres of land"// initializing storage viariablesvar name stringvar unit stringvar amount intvar temp string// taking input and storing in variable using the buffer stringfmt.Sscanf(src_buff,"%s %s %d %s", &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);}
Free Resources