Неожиданный вывод в функции fmt.Println () - PullRequest
0 голосов
/ 27 октября 2018

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

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

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

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

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

Спасибо!

1 Ответ

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

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

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

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

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

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

...