Как добавить значения в ... interface {}? - PullRequest
0 голосов
/ 07 мая 2018

Вот пример функции, которую я хочу эмулировать:

package main

import "fmt"

func main() {
    fmt.Println(fmt.Sprintf("Initially I want %d %s", 2, "dogs"))
    fmt.Println(Sprintf2("Now I want %d %s", 2, "dogs"))
}

func Sprintf2(format string, a ...interface{}) string {

return fmt.Sprintf(format + " and %d cats", append(a, 5))
}

вот ссылка на игровую площадку: https://play.golang.org/p/dHDwTlbRLDu

ожидаемый результат:

Изначально я хочу 2 собак
Теперь я хочу 2 собаки и 5 кошек

фактическая мощность:

Изначально я хочу 2 собак
Теперь я хочу, чтобы [2%! D (строка = собаки) 5]%! S (MISSING) и%! D (MISSING) кошки

1 Ответ

0 голосов
/ 07 мая 2018

Вам нужно сначала добавить новое значение к срезу a, а затем распаковать срез при вызове fmt.Sprintf:

func Sprintf2(format string, a ...interface{}) string {
    a = append(a, 5)
    return fmt.Sprintf(format+" and %d cats", a...)
}

https://play.golang.org/p/YRWzAT2Yxm_q

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...