将参数连接成一个字符串

时间:2018-10-27 20:37:35

标签: go

我有这个:

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,以便将其所有字符串参数连接为一个字符串?

2 个答案:

答案 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()
}