在 Go 编程中,fmt.Sprintf 函数用于格式化字符串。但是,当输入字符串包含意外字段时,就会出现问题,导致恐慌。
让我们考虑以下代码片段:
<code class="go">package main import "fmt" func main() { tmp_str := "hello %s" str := fmt.Sprintf(tmp_str, "world") fmt.Println(str) }</code>
在此示例中, tmp_str 是一个需要单个参数的模板字符串。但是,如果程序收到像“Hello Friends”这样的完整字符串(而不是模板),则 fmt.Sprintf 将由于存在额外参数而发生恐慌。错误消息为:
Hello Friends%!(EXTRA string=world)
处理此问题的一种方法是强制在模板字符串中使用有效的 %s 动词。用户可以提供占位符动词,例如 %.0s 或 %.s,以指示如果不存在匹配字段,参数将被截断为零长度。这是一个示例:
<code class="go">tmp_str := "Hello Friends%.s"</code>
使用 %.s 将截断任何额外字段,从而产生所需的输出:
Hello Friends
以上是如何处理 fmt.Sprintf 中的意外字段?的详细内容。更多信息请关注PHP中文网其他相关文章!