我有这个:
if t.FieldName != "" {
if t.FieldName != item.FieldName {
panic(errors.New("FieldName does not match, see: ", t.FieldName, item.FieldName))
}
}
由于错误而无法编译的
New接受一个字符串arg。所以我需要做类似的事情:
panic(errors.New(joinArgs("FieldName does not match, see: ", t.FieldName, item.FieldName)))
如何实现joinArgs,以便将其所有字符串参数连接为一个字符串?
答案 0 :(得分:2)
XY问题是在询问您尝试的解决方案,而不是实际的问题:The XY Problem。您真正的问题是格式化panic
错误消息。
这是解决您实际问题的常规方法:
package main
import "fmt"
func main() {
t := struct{ FieldName string }{FieldName: "a t.FieldName"}
item := struct{ FieldName string }{FieldName: "an item.FieldName"}
panic(fmt.Sprintf("FieldName does not match, see: %v %v", t.FieldName, item.FieldName))
}
游乐场:https://play.golang.org/p/DaOlcqUgV_H
输出:
panic: FieldName does not match, see: a t.FieldName an item.FieldName
答案 1 :(得分:0)
这似乎可行,不确定是否最合适
func joinArgs(strangs ...string) string {
buffer := bytes.NewBufferString("")
for _, s := range strangs {
buffer.WriteString(s)
}
return buffer.String()
}