Conversão de tipos de slices de interfaces em Go: como converter []interface{} em []string?
Olá a todos! Sou novo em Go e me deparei com um problema que me parece muito estranho. Tenho uma função que recebe `[]interface{}` (slice de interfaces), mas preciso passá-lo para outra função que espera `[]string`. Estou tentando fazer uma simples conversão de tipo, mas o compilador retorna um erro.
Aqui está um exemplo de código:
```go
package main
import "fmt"
func printStrings(strings []string) {
for _, s := range strings {
fmt.Println(s)
}
}
func main() {
var data []interface{} = []interface{}{"hello", "world", "golang"}
// Erro: cannot use data (type []interface{}) as type []string in argument to printStrings
printStrings(data)
}
```
Eu entendo que `[]interface{}` e `[]string` são tipos diferentes, mas cada elemento em `data` já é uma string! Por que Go não permite simplesmente converter um slice em outro? Em outras linguagens, como Python ou Java, isso funciona através de conversão de tipos.
Tentei usar `data.([]