Avatar ·

json.Unmarshal contre json.NewDecoder.Decode : quelle est la différence en Go ?

Bonjour à tous ! Je suis débutant en Go et j'essaie de comprendre le parsing JSON. Je vois qu'il y a deux façons dans la bibliothèque standard : `json.Unmarshal` et `json.NewDecoder().Decode()`. Les deux semblent faire la même chose — transformer du JSON en structure de données Go. Mais je ne comprends pas quand utiliser l'un ou l'autre. Par exemple, j'ai ce code : ```go type User struct { Name string `json:"name"` Age int `json:"age"` } // Méthode 1 data := `{"name":"Alice","age":30}` var user1 User err := json.Unmarshal([]byte(data), &user1) // Méthode 2 reader := strings.NewReader(data) var user2 User err = json.NewDecoder(reader).Decode(&user2) ``` Les deux options fonctionnent de la même manière. Mais j'ai entendu dire que `Decoder` est meilleur pour les flux, tandis que `Unmarshal` est pour les petites données. Quelle est la vraie différence ? Y a-t-il une différence de performance ? Quand faut-il choisir une méthode plutôt que l'autre ? Et que se passe-t-il si le JSON est très volumineux (par exemple, 100 Mo) ? Aidez-moi à comprendre, car la documentation n'est pas claire.