💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ محمد حیدری
چگونگی زیادش شدن cap در صورت نبود فضای لازم برای append کردن
جامعه گولنگ ایجاد شده در ۱۰ خرداد ۱۴۰۲

سلام

توی اسلایدی که در دقیقه 7:15 مشاهده میکنید، در صورتی که ما فضای کافی برای append کردن نداشته باشیم به تعداد len به cap اضافه خواهد شد.

ولی در مثال آخر دقیقه 18:00، slv1 cap از 8 به 12 افزایش پیدا کرده یعنی به تعداد نصف len به cap اضافه شده.

میخواستم بپرسم چرا نحوه محاسبه مقدار افزایشی cap در دو مثال فوق متفاوت هستش و به طور کلی این مقدار بر چه اساسی انتخاب میشه؟

سلام

خیلی خوبه که به دقت این موارد را بررسی میکنی و نگاه عمقی‌تری به مفاهیم داری.

رشد فضای slice اینطوری نیست که همیشه دو برابر بشه.

البته توی مثال دقیقه 18 دو برابر شده، در واقع از 6 شده 12 و از 8 نشده 12.

برای اینکه ببینی رشد فضای slice با چه منطقی هستش و چطور محاسبه میشه میتونی سورس گولنگ رو بخونی مثلا اینجا

در مثال دقیقه 18 رشد cap بدین شکل خواهد بود:

slc1 := myArray[2:6] //len 4 cap 6
slc1 = append(slc1, 99) //len 5, cap 6
slc1 = append(slc1, 98) //len 5, cap 6
slc1 = append(slc1, 97) //len 7, cap 12  ==>  2x
slc1 = append(slc1, 96) //len 8, cap 12
بهترین پاسخ
حامد نعیمایی ۱۰ خرداد ۱۴۰۲، ۱۳:۱۳

ممنون که تایم گذاشتید و جواب دادید.

بله حق با شماست در رابطه با مثال دقیقه 18:00 من اشتباه کرده بودم.

محمد حیدری ۱۱ خرداد ۱۴۰۲، ۱۸:۵۱