gpt4 book ai didi

serialization - `fmt` 包的函数是否支持数组的格式化程序?

转载 作者:数据小太阳 更新时间:2023-10-29 03:16:10 24 4
gpt4 key购买 nike

我正在尝试提交一封包含多个参数的电子邮件,并且我在一个单独的文件中有一些电子邮件,其中包含一些打印动词,但由于动词太多,我最终得到了这样一行:

message := fmt.Sprintf(util.CONTACT_EMAIL, form.Name, form.Email, form.Email,     form.Phone, form.Phone, form.Message, ...)

它一直在继续,看起来很糟糕。我重复一些动词的原因是为了获得 href,例如 <a href"mailto:%s">%s</a> ,等等。如果有人对此有更好的方法,我真的很想知道。

但是关于我的问题.. Go 是否有一个类似于 vsprintf在 PHP 中?它基本上以一个数组作为参数,所以它就像:

string vsprintf(string $format , array $args) 

.. 而不是我上面的困惑,这让它更具可读性。

我查看了文档,但似乎什么也没看到。但是 Go 所做的很多事情对我来说仍然很陌生,所以也许我忽略了它。

最佳答案

如果您只想将一部分参数传递给 fmt.Sprintf(或任何其他接受可变数量参数的函数),您可以这样做:

func main() {
s := []interface{}{1,2,5}
z := fmt.Sprintf("%d, %d, %d", s...)
print(z)
}

或者如果您有任何非空接口(interface)的 slice ,我们必须将其复制到空接口(interface)的 slice 中:

func main() {
s := []int{1,2,5}

// we need to copy each element one-by-one into a []interface{}
// because they are laid out differently in memory in go.
var x []interface{}
for _, i := range s {
x = append(x, i)
}

// pass the contents of the new slice into sprintf
z := fmt.Sprintf("%d, %d, %d", x...)
print(z)
}

关于serialization - `fmt` 包的函数是否支持数组的格式化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34952479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com