Home > Article > Backend Development > How Can I Efficiently Reference Parameters in Go's fmt.Sprintf?
Efficiently Referencing Parameters in fmt.Sprintf
To accurately format strings in Go using fmt.Sprintf, it's crucial to understand how arguments map to formatting verbs. By default, each verb formats the next available argument, creating a sequential relationship.
However, you can overcome the need to pass the same parameter multiple times by using explicit argument indexes. Precede the formatting verb with [n], where n represents the one-indexed position of the argument to be formatted.
This technique is particularly useful in functions like getTableCreationCommands. Instead of passing the variable v four times, you can pass it once and reference it within the fmt.Sprintf string as:
return fmt.Sprintf(` CREATE TABLE share_%[1]v PARTITION OF share FOR VALUES IN (%[1]v); CREATE TABLE nearby_%[1]v PARTITION OF nearby FOR VALUES IN (%[1]v); `, s)
In this example, we pass the string s once and use the argument index [1] to refer to it within the formatted string. This approach streamlines the formatting process, reduces code duplication, and enhances maintainability.
Here's a complete example:
package main import "fmt" func getTableCreationCommands(s string) string { return fmt.Sprintf(` CREATE TABLE share_%[1]v PARTITION OF share FOR VALUES IN (%[1]v); CREATE TABLE nearby_%[1]v PARTITION OF nearby FOR VALUES IN (%[1]v); `, s) } func main() { fmt.Println(getTableCreationCommands("X")) }
Output:
CREATE TABLE share_X PARTITION OF share FOR VALUES IN (X); CREATE TABLE nearby_X PARTITION OF nearby FOR VALUES IN (X);
The above is the detailed content of How Can I Efficiently Reference Parameters in Go's fmt.Sprintf?. For more information, please follow other related articles on the PHP Chinese website!