Go fmt.Println()函数中出现意外输出

Go fmt.Println()函数中出现意外输出,go,refactoring,println,Go,Refactoring,Println,我从golang(total noob)开始,我为fmt.Println(str)使用了一个简单的包装函数,只是因为它比较短,我更习惯于它: func echo(str ...interface{}) { fmt.Println(str) } 问题是,echo(“Hello”)的输出是[Hello],而不是Hello 我是否遗漏了一些语法细节?如何更改功能以使其按预期工作 除了这个函数的实际需求之外,我还对这个问题的语言特定细节感兴趣 谢谢 问题是您将fmt.Println参数作为切片发送

我从golang(total noob)开始,我为
fmt.Println(str)
使用了一个简单的包装函数,只是因为它比较短,我更习惯于它:

func echo(str ...interface{}) {
  fmt.Println(str)
}
问题是,
echo(“Hello”)
的输出是
[Hello]
,而不是
Hello

我是否遗漏了一些语法细节?如何更改功能以使其按预期工作

除了这个函数的实际需求之外,我还对这个问题的语言特定细节感兴趣


谢谢

问题是您将
fmt.Println
参数作为切片发送给
fmt.Println,而不是作为varadic发送

将您的方法更改为:

func echo(str ...interface{}) {
    fmt.Println(str...)
}
它会像你期望的那样工作


检查主题变量函数的参数。

问题是您将参数作为切片发送到
fmt.Println
而不是varadic

将您的方法更改为:

func echo(str ...interface{}) {
    fmt.Println(str...)
}
它会像你期望的那样工作

检查来自的变量函数的参数主题