Неожиданный вывод в функции fmt.Println()

Я начинаю с golang (total noob) и использую простую функцию-обертку для fmt.Println(str)только потому, что он короче и я к нему привык:

func echo(str ...interface{}) {
  fmt.Println(str)
}

Дело в том, что выход для echo("Hello") является [Hello] вместо Hello,

Я пропускаю некоторые детали синтаксиса здесь? Как я могу изменить функцию для работы, как ожидалось?

Помимо фактической необходимости этой функции, меня интересуют подробные сведения об этой проблеме для конкретного языка.

Спасибо!

1 ответ

Решение

Проблема в том, что вы отправляете fmt.Println Параметр в качестве среза, но не так, как varadic.

Измените свой метод на:

func echo(str ...interface{}) {
    fmt.Println(str...)
}

И это будет работать, как вы ожидаете.

Проверьте тему Аргументы в пользу вариационных функций с этого сайта.

Другие вопросы по тегам