我正在学习Go语言中的strings
包,并尝试构建一个简单的错误消息。
我读到strings.Builder
是一种非常有效的连接字符串的方法,并且fmt.Sprintf
允许我做一些字符串插值。
话虽如此,我还是想知道将许多字符串连接在一起的最佳方法。例如,下面是我创建的字符串:
func generateValidationErrorMessage(err error) string {
errors := []string{}
for _, err := range err.(validator.ValidationErrors) {
var b strings.Builder
b.WriteString(fmt.Sprintf("[%s] failed validation [%s]", err.Field(), err.ActualTag()))
if err.Param() != "" {
b.WriteString(fmt.Sprintf("[%s]", err.Param()))
}
errors = append(errors, b.String())
}
return strings.Join(errors, "; ")
}
有没有其他/更好的方法来做到这一点?使用s1 + s2
是否被认为更糟糕?
1条答案
按热度按时间svmlkihl1#
您可以使用
fmt
直接打印到strings.Builder
。请使用fmt.Fprintf(&builder, "format string", args)
。以
Fprint...
开头的fmt
函数,意思是“文件打印”,允许您打印到io.Writer
,如os.File
或strings.Builder
。另外,不要使用多个构建器,然后在最后连接它们的字符串,而只使用一个构建器,然后不断地向它写入。如果你想添加一个分隔符,你可以在循环中很容易地完成: