Пример из книги 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)
}
Я попытался заменить строковый аргумент * [] для reclassify () на интерфейс:
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 моей версии не имеет смысла, но я не уверен, что изменить, если что-нибудь.