原型函数
func test(i ...interface{}) {
// Code here
}
有可能的使用
type foo struct {
// Fields
}
foos := []foo{
// foo1, foo2 ...
}
test(foos...) // ERROR
test(foos[1], foos[2], ...) // OK
错误
无法使用 foos([]foos 类型的变量)作为要测试的参数中的 []interface{} 值
预期用途是像内置函数一样使用append()
。
https://golang.google.cn/pkg/builtin/#append
func append(slice []Type, elems ...Type) []Type
虽然,正如我所见,append()
不使用interface{}
,这很奇怪,因为在我搜索的任何地方,所有人都说interface{}
当您不知道类型时使用。但他们没有。不,append()
使用名为 的“内置”类型Type
,显然文档说它是一个int
. 虽然,我不能使用它。没有这种类型。如果有的话我也不知道如何使用它。
https://golang.google.cn/pkg/builtin/#Type
type Type int
所以,我在这里很困惑。
为什么展开运算符不能按预期工作?例如,在 Javascript 中,扩展运算符只是将数组扩展为项目。但在 Golang 中,它似乎保留了相同的数组参数类型,但稍后给编译器提供了传播它的指令。这很奇怪。
我们是否能够制作类似的自定义机制append()
?或者我是一个假人,我无论如何都使用了错误的东西?
ABOUTYOU
小唯快跑啊
人到中年有点甜
相关分类