Descompactando slice/array em argumentos de função em Go: existe um análogo do operador spread do JS/Python?
Olá a todos. Estou escrevendo em Go recentemente, vim do Python e JavaScript. Lá era muito conveniente passar um array ou lista para uma função que aceita vários argumentos usando o operador `*` (em Python) ou `...` (spread em JS). Por exemplo, em Python eu podia fazer `my_func(*my_list)`.
Agora em Go eu tenho uma função que aceita vários argumentos de string:
```go
func printNames(name1, name2, name3 string) {
fmt.Println(name1, name2, name3)
}
```
E eu tenho um slice de strings:
```go
names := []string{"Alice", "Bob", "Charlie"}
```
Como posso passar os elementos deste slice para a função `printNames` como argumentos separados? Tentei simplesmente escrever `printNames(names...)`, mas o compilador reclama que não posso usar slice com `...` em uma função com parâmetros fixos. Tentei descompactar explicitamente com `names[0], names[1], names[2]` — isso funciona, mas se eu tiver 10 elementos, vira um pesadelo.
Alguém sabe se existe em Go uma maneira de descompactar um slice ou array?