Объедините аргументы в одну строку - PullRequest
0 голосов
/ 27 октября 2018

У меня есть это:

if t.FieldName != "" {
        if t.FieldName != item.FieldName {
            panic(errors.New("FieldName does not match, see: ", t.FieldName, item.FieldName))
        }
}

, которое не скомпилируется из-за ошибок. New принимает одну строковую аргумент.Поэтому мне нужно сделать что-то вроде:

panic(errors.New(joinArgs("FieldName does not match, see: ", t.FieldName, item.FieldName)))

Как я могу реализовать joinArgs, чтобы он объединял все свои строковые аргументы в одну строку?

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Проблема XY спрашивает о вашей попытке решения, а не о реальной проблеме: Проблема XY .Ваша настоящая проблема - это форматирование 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
0 голосов
/ 27 октября 2018

Казалось бы, это работает, не уверен, что это оптимально, хотя

func joinArgs(strangs ...string) string {
    buffer := bytes.NewBufferString("")
    for _, s := range strangs {
        buffer.WriteString(s)
    }
    return buffer.String()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...