Pointers 将数组指针传递给需要类型接口的函数

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

Golang书中的一个示例显示了通过引用传递到函数中的数组指针:

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的例子就是我正在尝试的。