Sscan, Sscanf. Parsing in values from space-separated strings is a problem that has existed for many years. Even the earliest programmers may have struggled with this problem.
With Sscan and Sscanf, we can parse strings into multiple values. Sscan uses a space as a separator. And Sscanf uses a format string to guide its parsing.
Sscan example. Here we have a string that has values in it separated by spaces. We pass the correct number of arguments (as references) to fmt.Sscan. They are filled with the parsed values.
Tip We must pass the local variables we want to store the values in as references.
package main
import "fmt"
func main() {
// Store values from Sscan in these locals.
value1 := ""
value2 := ""
value3 := 0
// Scan the 3 strings into 3 local variables.// ... Must pass in the address of the locals.
_, err := fmt.Sscan("Bird frog 100", &value1, &value2, &value3);
// If the error is nil, we have successfully parsed the values.
if err == nil {
// Print the values.
fmt.Println("VALUE1:", value1);
fmt.Println("VALUE2:", value2);
fmt.Println("VALUE3:", value3);
}
}VALUE1: Bird
VALUE2: frog
VALUE3: 100
Sscanf. With this method, we must specify a format string to guide the parsing of the values. We can use standard format codes in the format string.
Tip Sscanf works the same way as Sscan except we must pass a format string as the second argument.
package main
import "fmt"
func main() {
value1 := 0
value2 := ""
value3 := 0
// Use format string to parse in values.// ... We parse 1 number, 1 string and 1 number.
_, err := fmt.Sscanf("10 Bird 5", "%d %s %d", &value1, &value2, &value3);
if err == nil {
fmt.Println("VALUE1:", value1);
fmt.Println("VALUE2:", value2);
fmt.Println("VALUE3:", value3);
}
}VALUE1: 10
VALUE2: Bird
VALUE3: 5
Sscan versus split. With split() or fields() we can separate values and parse them. This has some advantages over Sscan, particularly for oddly-formed strings.
A review. With fmt.Sscan and Sscanf we have built-in parsing methods for strings that contain multiple values. These methods, when used correctly, can simplify programs.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on Jan 11, 2024 (edit).