Добавление элементов в оболочку вариативной функции без перераспределения нового фрагмента

Хорошо, мне нужна небольшая оболочка fmt.Printf () для удобства отладки :

1 / "слишком много аргументов в вызове fmt.Fprintln":

func Debug (a ... interface{}) {
    if debug {
        fmt.Fprintln(out, prefix, sep, a...)
    }
}

2 / "список имен недопустим в типе интерфейса":

func Debug (a ... interface{}) {
    if debug {
        fmt.Fprintln(out, []interface{prefix, sep, a...}...)
    }
}

3 / Работает, но кажется неправильным:

func Debug (a ... interface{}) {
    if debug {
        sl := make ([]interface{}, len(a) + 2)
        sl[0] = prefix
        sl[1] = sep
        for i, v := range a {
            sl[2+i] = v
        }

        fmt.Fprintln(out, sl...)
    }
}

Есть идеи для избежать выделения дополнительной памяти?

5
задан r---------k 22 December 2011 в 14:42
поделиться