Pointers 将数组指针传递给需要类型接口的函数
Golang书中的一个示例显示了通过引用传递到函数中的数组指针:Pointers 将数组指针传递给需要类型接口的函数,pointers,go,slice,Pointers,Go,Slice,Golang书中的一个示例显示了通过引用传递到函数中的数组指针: package main import "fmt" func reclassify(planets *[]string) { *planets = (*planets)[0:8] } func main() { planets := []string{ "mercury", "venus", "earth", "mars", "jupiter", "saturn", "ura
package main
import "fmt"
func reclassify(planets *[]string) {
*planets = (*planets)[0:8]
}
func main() {
planets := []string{
"mercury", "venus", "earth", "mars", "jupiter",
"saturn", "uranus", "neptune", "pluto",
}
reclassify(&planets)
fmt.Println(planets)
}
我尝试用接口替换*[]字符串参数以重新分类:
func reclassify(planets interface{}) {
*planets = planets.(*[]string)[0:8]
}
但是,我会遇到以下错误:
./test.go:10:2: invalid indirect of planets (type interface {})
./test.go:10:32: cannot slice planets.(*[]string) (type *[]string)
我以前曾使用该接口将不同的数据类型传递到给定的函数中。对于这个例子,有没有可能以类似的方式进行
我可以看出我版本的*planets变量没有意义,但我不确定要将其更改为什么,如果有的话。我建议使用类型断言来确定类型并更新它。Golang中的接口只是一个接口
func reclassify(planets interface{}) {
switch v := planets.(type) {
case *[]string:
fmt.Println("Slice string:",*v)
*v = (*v)[0:8]
default:
fmt.Println("Uknown")
}
}
使用以下代码:*planets.[]string=*planets.[]string[0:8]接口{}并不意味着“任何类型”ist只意味着接口{}。走一走。你似乎尝试的东西不起作用。停止使用空接口。谢谢。如果真的把它放进一个真正的程序中,我会使用它。Cerise Limon的例子就是我正在尝试的。