একটি মানচিত্রের সমস্ত কী উপস্থাপিত হচ্ছে


315

গো ভাষার মানচিত্রে সমস্ত কীগুলির একটি তালিকা পাওয়ার কোনও উপায় আছে? উপাদানগুলির সংখ্যা দ্বারা প্রদত্ত len(), তবে আমার মতো মানচিত্র থাকলে:

m := map[string]string{ "key1":"val1", "key2":"val2" };

কীভাবে আমি সমস্ত কীগুলি দিয়ে পুনরুক্তি করব?

উত্তর:


544

https://play.golang.org/p/JGZ7mN0-U-

for k, v := range m { 
    fmt.Printf("key[%s] value[%s]\n", k, v)
}

অথবা

for k := range m {
    fmt.Printf("key[%s] value[%s]\n", k, m[k])
}

forবিবৃতিগুলির জন্য ল্যাঙ্গুয়েজ স্পেসগুলি নির্দিষ্ট করে যে প্রথম মানটি মূল, দ্বিতীয় ভেরিয়েবলটি মান, তবে উপস্থিত থাকতে হবে না।


22
একটি সম্ভাব্য গোচা হিসাবে, নোট করুন যে পুনরাবৃত্তির ক্রমটি পূর্বনির্ধারিত। groups.google.com/d/msg/golang-nuts/YfDxpkI34hY/4pktJI2ytusJ
— mna

23
সুধীর: গোলং ভাষার বিশেষায়িতভাবে মানচিত্রের কীগুলির অপরিজ্ঞাত ক্রম হিসাবে স্পষ্টভাবে সংজ্ঞা দেওয়া হয়েছে। তদ্ব্যতীত, Go 1 সাল থেকে, কোনও অর্ডারের উপর নির্ভরতা রোধ করতে মূল অর্ডারটি ইচ্ছাকৃতভাবে রানগুলির মধ্যে এলোমেলোভাবে তৈরি করা হয়।
— মার্ক রেনুফ

6
মনে রাখবেন যে এটি কোনও পরিবর্তনযোগ্য পুনরাবৃত্তি নয়, যার অর্থ একটি কী মুছে ফেলার জন্য আপনাকে পুনরাবৃত্তি পুনরায় আরম্ভ করতে হবে।
— রিক স্মিথ

ছোট ডেটা সেটগুলির জন্যও মানচিত্রের অর্ডার অনুমানযোগ্য হতে পারে।
— Woot

14

sliceমানচিত্র-কীগুলি পাওয়ার জন্য এখানে কিছু সহজ উপায় ।

// Return keys of the given map
func Keys(m map[string]interface{}) (keys []string) {
    for k := range m {
        keys = append(keys, k)
    }
    return keys
}

// use `Keys` func
func main() {
    m := map[string]interface{}{
        "foo": 1,
        "bar": true,
        "baz": "baz",
    }
    fmt.Println(Keys(m)) // [foo bar baz]
}

Keysফাংশনটির পক্ষে কেবল স্ট্রিং নয়, কোনও ধরণের কীগুলির সাথে একটি মানচিত্র নেওয়া সম্ভব ?
— রবার্ট টি। ম্যাকগিবন

func Keys(m map[interface{}]interface{}) (keys []interface{}), @ রবার্টটি.এমসি গিবন আপনাকে "প্রোটোটাইপ" ফাংশনটি পরিবর্তন করতে হবে
— a8m

1
@ArielM। এটি কেবল সঠিক ধরণের জন্য কাজ করবে map[interface{}]interface{}। গো জেনেরিক সমর্থন করে না। আপনি কোনও mapপ্যারামিটার দিয়ে কোনও ফাংশন তৈরি করতে পারবেন না যা বিভিন্ন কী ধরণের মানচিত্র গ্রহণ করে।
— আইজজা

10

গো ভাষার মানচিত্রে সমস্ত কীগুলির একটি তালিকা পাওয়ার কোনও উপায় আছে?

ks := reflect.ValueOf(m).MapKeys()

আমি কীগুলি সমস্ত কী দিয়ে পুনরাবৃত্তি করব?

গৃহীত উত্তরটি ব্যবহার করুন:

for k, _ := range m { ... }

1
আমি মনে করি আপনি বোঝাতে চেয়েছিলেন for _, k := range v.MapKeys(), যেহেতু আপনার উদাহরণ হিসাবে, kকীগুলির
— ব্রায়ান লেশম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.