Que signifie interface{} en Go et comment l'utiliser correctement ?
Bonjour à tous ! Je viens de commencer à apprendre Go, et la construction `interface{}` me trouble. Je la rencontre partout : dans les fonctions, dans les structures de données, dans les arguments.
Par exemple, j'ai vu ce code :
```go
func PrintAnything(v interface{}) {
fmt.Println(v)
}
func main() {
PrintAnything(42)
PrintAnything("hello")
PrintAnything([]int{1,2,3})
}
```
Je comprends que c'est une sorte d'"interface vide", mais je n'en saisis pas complètement le sens. Est-ce que `interface{}` peut stocker une valeur de n'importe quel type ? Mais alors, en quoi cela diffère-t-il de `Object` en Java ou de `void*` en C ? Et si je passe un `interface{}` à une fonction, comment récupérer le type d'origine ?
Je vois aussi souvent des déclarations comme `map[string]interface{}` ou `[]interface{}`. Cela signifie-t-il que je peux stocker dans une même sli