Golang 書中的一個(gè)示例顯示了一個(gè)指向數(shù)組的指針通過引用傳遞到函數(shù)中:package mainimport "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)}我嘗試用接口替換 reclassify() 的 *[]string 參數(shù):func reclassify(planets interface{}) { *planets = planets.(*[]string)[0:8]}但是我收到這些錯(cuò)誤:./test.go:10:2: invalid indirect of planets (type interface {})./test.go:10:32: cannot slice planets.(*[]string) (type *[]string)我之前使用過該接口將不同的數(shù)據(jù)類型傳遞給給定的函數(shù)。是否可以以類似的方式對(duì)此示例進(jìn)行操作?我可以看到我的版本的 *planets 變量沒有意義,但我不確定將其更改為什么(如果有的話)
1 回答

慕田峪7331174
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊
我建議使用類型斷言來確定類型并更新它。interface在Golang中只是一個(gè)接口。
func reclassify(planets interface{}) {
switch v := planets.(type) {
case *[]string:
fmt.Println("Slice string:",*v)
*v = (*v)[0:8]
default:
fmt.Println("Uknown")
}
}
- 1 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報(bào)
0/150
提交
取消