2015-12-12 16 views
11

मैं किसी दिए गए interface{} मूल्य के लिए एक []interface{} टुकड़ा तलाश कर रहा हूँ:जाँच हो रही है समानता {}

var v interface{} 
for i := 0; i < len(A); i++ { 
    if (A[i] == v) { 
    fmt.Println("Gotcha!") 
    break 
    } 
} 

तुच्छ मामला प्रकार int हैं। हालांकि, अगर मुझे कुछ कस्टम struct टाइप करना है तो मुझे क्या करना चाहिए?

+3

यदि structs [तुलनीय] (https://golang.org/ref/spec#Comparison_operators) हैं, तो कोड इस प्रकार काम करता है। –

+1

उस पर विस्तार करने के लिए, @ कोडिंग पिक्सेल के लिंक किए गए दस्तावेज़ से उद्धरण: 'इंटरफ़ेस मान तुलनीय हैं। दो इंटरफ़ेस मान बराबर होते हैं यदि उनके पास समान गतिशील प्रकार और समान गतिशील मान होते हैं या दोनों के पास मूल्य शून्य है –

उत्तर

15

धन्यवाद @CodingPickle टिप्पणी करने के लिए, मैं Go Programming Language Specification

से निम्नलिखित समानता ऑपरेटरों == और! = ऑपरेंड कि तुलनीय हैं पर लागू होते हैं प्रदान करते हैं।

interface{} और structs के बारे में:

  • इंटरफ़ेस मूल्यों तुलनीय है। दो इंटरफ़ेस मान बराबर होते हैं यदि उनके पास समान गतिशील प्रकार और समान गतिशील मान होते हैं या दोनों के पास मूल्य शून्य है।
  • गैर-इंटरफ़ेस प्रकार एक्स का मान x और इंटरफ़ेस प्रकार टी का मान टी तुलनीय है जब प्रकार एक्स के मान तुलनीय हैं और एक्स लागू होता है। टी के गतिशील प्रकार एक्स और टी के गतिशील मान के समान होते हैं एक्स के बराबर
  • संरचना मूल्य तुलनात्मक हैं यदि उनके सभी फ़ील्ड तुलनीय हैं। दो संरचना मान समान हैं यदि उनके संबंधित गैर-रिक्त फ़ील्ड बराबर हैं।

दूसरे शब्दों में, समानता को संभालना गो में आसान लगता है!

संबंधित मुद्दे