戈朗 : Variable argument

标签 go

当我编译下面的程序时

func myPrint(v ...interface{}) {
        fmt.Println("Hello", v...)
}
func main() {
    myPrint("new", "world")
}

编译错误

too many arguments in call to fmt.Println

我认为 v... 将扩展为第二个、第三个参数,而 fmt.Println 会看到三项可变参数列表。我认为这相当于

fmt.Println("Hello", "new", "world")

为什么会报错。

最佳答案

试试这个。它将 Hello 添加到可变参数前面,然后使用 println 将它们全部打印出来。

package main

import "fmt"

func myPrint(v ...interface{}) {
    a := append([]interface{}{"Hello"}, v...)   // prepend "Hello" to variadics
    fmt.Println(a...)                           // println the whole lot
}
func main() {
    myPrint("new", "world")
}

关于戈朗 : Variable argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092994/

相关文章:

go - 将Gorm查询映射到结构列表

go - 使用嵌套结构和文本/模板包时,删除打印的{}大括号

go - 为什么 recover() 在嵌套的延迟函数中不起作用?

go - 解决 go 1.7 中 vendor 的 'cannot find package' 错误

go - 如何从 map 界面获取/设置值?

go - 将恢复传递给上层 goroutine golang

go - 从 --go_out=plugins 切换到 -go-grpc_out PATH 问题

go - 使用 "database/sql"时如何防止 Go 中的 SQL 注入(inject)攻击?

去旅游#5 : select statement example

go - 为什么返回具体类型不满足需要接口(interface)返回的接口(interface)