Avatar ·

json.Unmarshal مقابل json.NewDecoder.Decode: أيهما تختار لتحليل JSON في Go؟

مرحبًا بالجميع! لقد بدأت للتو في تعلم Go وواجهت مشكلة في الاختيار بين `json.Unmarshal` و `json.NewDecoder.Decode` لتحليل JSON. كلتا الطريقتين تقومان بنفس الشيء — فك تشفير JSON إلى هيكل، لكن في التوثيق مكتوب أن هناك فروقًا دقيقة. إليك مثال كتبته: ```go package main import ( "encoding/json" "fmt" "strings" ) type User struct { Name string `json:"name"` Age int `json:"age"` } func main() { jsonStr := `{"name": "Alice", "age": 30}` // الخيار 1 var user1 User err := json.Unmarshal([]byte(jsonStr), &user1) if err != nil { fmt.Println("Unmarshal error:", err) } fmt.Println(user1) // الخيار 2 var user2 User decoder := json.NewDecoder(strings.NewReader(jsonStr)) err = decoder.Decode(&user2) if err != nil { fmt.Println("Decoder error:", err) } fmt.Println(user2) } ``` كلا الخيارين يعملان بنفس الطريقة. لكنني قرأت أن `NewD