Go में खाली स्लाइस को सही तरीके से इनिशियलाइज़ कैसे करें: var s []int बनाम s := make([]int, 0)?
सभी को नमस्कार! मैंने हाल ही में Go सीखना शुरू किया है और खाली स्लाइस को इनिशियलाइज़ करने की समस्या का सामना किया। ऐसा लगता है कि दो लोकप्रिय तरीके हैं:
1. `var s []int` — बिना इनिशियलाइज़ेशन के घोषणा (nil-स्लाइस)
2. `s := make([]int, 0)` — make के माध्यम से खाली स्लाइस के साथ इनिशियलाइज़ेशन
मैंने पढ़ा है कि दोनों विकल्पों का उपयोग किया जा सकता है, और कुछ मामलों में वे समान व्यवहार करते हैं। उदाहरण के लिए, यदि मैं `fmt.Println(s)` करता हूँ, तो दोनों मामलों में `[]` आउटपुट होता है। लेकिन मैंने JSON में सीरियलाइज़ेशन के दौरान अजीब व्यवहार देखा। यहाँ एक उदाहरण है:
```go
package main
import (
"encoding/json"
"fmt"
)
type MyStruct struct {
Items []string
}
func main() {
s1 := MyStruct{}
s2 := MyStruct{Items: []string{}}
json1, _ := json.Marshal(s1)
json2, _ := json.Marshal(s2)
fmt.Println(string(json1)) // {"Items":null}
fmt.Println(string(json2)) // {"Items":[]}
}
```
एक मामले में `null` और दूसरे में खाली array क्यों आउटपुट होता है? यह भ्रमित करने वाला है, खासकर जब मैं काम करता हूँ...