2011-08-12 9 views
8

क्या कोई गो संग्रह है जो 'सेट इन पायथन' जैसा है?क्या सेट में मौजूद हैं? (पायथन में की तरह)

विकल्प:

  • वहाँ जाओ में सेट को लागू करने के लिए एक आसान तरीका है?
  • क्या स्लाइस में डुप्लिकेट को खत्म करने के लिए कोई तरीका है?

उत्तर

8

आपके पास सिर्फ map[whatevertype]bool हो सकता है और यह मान true पर सेट कर सकता है। आप नक्शा कुंजी के रूप में स्लाइस में प्रत्येक तत्व जोड़ सकते हैं, फिर केवल अद्वितीय लोगों को वापस पाने के लिए range का उपयोग करें।

package main 
import "fmt" 
func main() { 
    m := make(map[string]bool) 
    s := make([]string, 0) 
    s = append(s, "foo") 
    s = append(s, "foo") 
    s = append(s, "foo") 
    s = append(s, "bar") 
    s = append(s, "bar") 
    for _, r := range s { 
     m[r] = true 
    } 
    s = make([]string, 0) 
    for k, _ := range m { 
     s = append(s, k) 
    } 
    fmt.Printf("%v\n", s) 
} 
+3

मैं सिर्फ जोड़ने के लिए कि आप वास्तव में, मूल्य के रूप में किसी भी मनमाने ढंग से प्रकार का उपयोग कर सकते हैं के बाद से आप इसके बारे में परवाह नहीं करना चाहती: इसके अलावा यहां एक अच्छा ब्लॉग पोस्ट है। लेकिन 'बूल' का उपयोग करके हमेशा सत्य पर सेट किया जाता है, यह जांचने में सक्षम होने का अतिरिक्त लाभ होता है कि कोई तत्व इंडेक्सिंग द्वारा मौजूद है या नहीं, क्योंकि जब आप एक कुंजी इंडेक्स करते हैं और यह अस्तित्व में नहीं होता है, तो यह मान प्रकार के लिए शून्य मान वापस कर देगा, जो बुलियन के लिए झूठा है। – newacct

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