我有以下Golang main函数,其中调用了另一个可变参数函数variadicFunc,我需要将不同数据类型的参数传递给该函数。 代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
package main

import"fmt"

func main() {
    variadicFunc("hello","Change","the","World using Golang", 1, 2, 3, 4)
}

func variadicFunc(messages ...string) {
    for _, i := range messages {
        fmt.Println(i)
    }
}

运行程序时,将引发以下错误。

Cannot use 1(type int) as type string in argument to variadicFunc

您可以使用界面

1
2
3
4
5
6
7
8
9
10
11
12
package main
import"fmt"

func main() {
  variadicFunc("hello","Change","the","World using Golang", 1, 2, 3, 4)
}

func variadicFunc(messages ...interface{}) {
  for _, i := range messages {
    fmt.Println(i)
  }
}
  • Brian Vanover:当我使用interface时,我只是获得打印输出的内存地址,而不是传递的参数字符串。
  • @CheralIrumborai,使用fmt包。 上面的代码将为您工作。