मुझे गो प्रकारों के बारे में एक त्वरित संदेह है।

type mystr string
var s1 mystr = "abc"
var s2 string = "abc"

यहाँ s1 हमेशा स्ट्रिंग प्रकार लेता है जो s2 के समान है। मेरा सवाल यह है कि गो में ऐसे प्रकार को परिभाषित करने की अनुमति क्यों है (जो आदिम प्रकार के हैं)। जब मैं s1 से s2 की तुलना भी नहीं कर सकता

if s1 == s2 // compilation error

ऐसे परिदृश्य के लिए उपयोग का मामला क्या हो सकता है?

go
0
sabu 8 सितंबर 2019, 13:48

1 उत्तर

सबसे बढ़िया उत्तर

यह अन्य प्रोग्रामिंग भाषाओं में विस्तार विधियों के समान है। आप अपने स्वयं के व्यवहार को अपने प्रकार में जोड़ सकते हैं (और मानक प्रकार में नहीं):

type MyStr string

func (s MyStr) Length() int {
    return len(string(s))
}

func main() {
    s := MyStr("hello")
    fmt.Println(s.Length())
}
3
demas 8 सितंबर 2019, 11:52