arrays - كيف يمكنني تهيئة مصفوفة بدون استخدام حلقة في غو؟




go initialization (2)

جعل بدء باستخدام وظيفة مجموعة دون معرفة عدد العناصر في الصفيف.

for i,_:=range(A){A[i] = true}

لدي مصفوفة A من القيم المنطقية، المفهرسة بواسطة الأعداد الصحيحة 0 إلى n ، تم تعيينها في البداية إلى true .

تنفيذي الحالي هو:

for i := 0; i < n; i++ {
    A[i] = true
}

استخدام حلقة هو أبسط حل. سيؤدي إنشاء صفيف أو شريحة إلى إرجاع قيمة صفرية دائما. والتي في حالة bool يعني جميع القيم ستكون false (قيمة صفر من نوع bool ).

لاحظ أنه باستخدام حرفي مركب يمكنك إنشاء شريحة أو مصفوفة وتهيئتها، ولكن لن يكون أي أقصر:

b1 := []bool{true, true, true}
b2 := [3]bool{true, true, true}

إذا كنت لا ترغب في استخدام for حلقة، يمكنك جعله أقصر قليلا من خلال إدخال ثابت للقيمة true :

const T = true
b3 := []bool{T, T, T}

إذا n هو كبير، for هو أبسط حل.

أو يمكنك تبديل منطق التطبيق الخاص بك، واستخدام المصفوفة أو شريحة لتخزين القيم المنبثقة في شريحة، وبهذه الطريقة قيمة "كل كاذبة" صفر ستكون قيمة أولية جيدة. ما أعنيه هو أنه إذا شريحة الخاص بك لتخزين إذا كانت الملفات موجودة ، هل يمكن تغيير المنطق بحيث شريحة مخازن ما إذا كانت الملفات مفقودة :

presents := []bool{true, true, true, true, true, true}

// Is equivalent to:

missings := make([]bool, 6) // All false
// missing=false means not missing, means present)

لاحظ أيضا أن ملء صفيف أو شريحة مع قيمة محددة يعرف باسم "ميمسيت" العملية. الذهاب ليس لديها وظيفة بنيت لذلك، ولكن من أجل حل فعال نرى هذا السؤال:

هل هناك التناظرية من ميمسيت في الذهاب؟







slice