忽略 fmt.Sprintf 中的多余字段
考虑一个场景,其中 Go 程序处理从命令行输入的字符串并使用 fmt。 Sprintf 生成格式化字符串。如果表示为 tmp_str 的输入包含占位符(例如“%s”)并且未提供随附的替换值,则 fmt.Sprintf 将引发错误并显示消息“EXTRA string=world”,其中“world”是缺少替换。
为了解决此问题并妥善处理输入可能缺少占位符的情况,一种方法是要求命令行用户始终包含“%s”占位符。这确保了即使没有为占位符分配任何值,程序也可以避免出现恐慌。将字符串截断为零长度(如下例所示)将抑制与占位符关联的任何输出:
<code class="go">package main import "fmt" func main() { tmp_str := "Hello Friends%.0s" str := fmt.Sprintf(tmp_str, "") fmt.Println(str) }</code>
输出:
Hello Friends
通过利用此策略,程序可以忽略传递给 fmt.Sprintf 的任何多余替换字段并保持稳定的行为。
以上是如何处理 fmt.Sprintf 中丢失的替换值?的详细内容。更多信息请关注PHP中文网其他相关文章!