首页  >  文章  >  后端开发  >  如何处理 fmt.Sprintf 中的意外字段?

如何处理 fmt.Sprintf 中的意外字段?

Patricia Arquette
Patricia Arquette原创
2024-10-31 19:05:02473浏览

How to Handle Unexpected Fields in fmt.Sprintf?

处理 fmt.Sprintf 中的意外字段

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn