Неожиданный вывод в функции 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...)
}
И это будет работать, как вы ожидаете.
Проверьте тему Аргументы в пользу вариационных функций с этого сайта.