2 ماه پیش
مپ ها یک نوع ساختمان داده برای ذخیره داده های key/value هستند. توی این قسمت با مپ ها آشنا میشیم و طریقه استفاده از آنها رو یاد میگیریم.
map یک نوع ساختمان داده برای ذخیره ی داده هایی هست که به صورت key/value یا کلید مقدار هستند. در داده های key/value ما یک مقدار (value) را به یک کلید (key) نسبت میدهیم و بعدا با استفاده از کلید (key) میتونیم به مقدار آن دسترسی پیدا کنیم.
برای تعریف مپ میتونیم از کلمه کلیدی map استفاده کنیم
داخل کروشه [ ] نوع داده ی کلیدها و بعد از کروشه نوع داده ی مقدارها را مشخص میکنیم. در مثال بالا ما یک مپ ایجاد کردیم که کلید و مقدار ها میتوانند از نوع رشته ای (متنی) باشند.
نوع داده ی کلید ها باید مقایسه پذیر باشد. نمیتوان از نوع داده ای که با عملگر == قابل مقایسه نیست, به عنوان نوع داده ی کلید (key) استفاده کنید. برای نمیتوان از نوع slice به عنوان key استفاده کرد.
بعد از تعریف یک مپ (declare) مقدار صفر آن (zero value) برابر با nil خواهد بود. شما میتوانید یک مقدار را از مپ بخوانید اما نمیتوانید روی map چیزی بنویسید! به مثال زیر دقت کنید:
اگر سعی کنید بعد از تعریف (declare) یک مپ دیتایی رو از آن بخوانید, مقدار صفر (zero value) مرتبط با value به شما برگشت داده می شود. اما اگر بخواهید روی map بنویسید با خطا (panic) مواجه خواهید شد.
تا اینجا با تعریف کردن map آشنا شدیم و فهمیدیم که مقدار اولیه آن nil است. اما برای تخصیص حافظه به یک map دو روش وجود دارد:
مپ لیترال
استفاده از make
مپ لیترال به این معنی هست که شما با استفاده از کلمه کلیدی map یک مقدار از نوع map ایجاد کنید و آن را درون متغیر خود قرار دهید.
با استفاده از make نیز میتوانید به map حافظه تخصیص بدید, بدینصورت مقدار اولیه مپ دیگر برابر با nil نخواهد بود و امکان نوشتن مقادیر روی map را خواهید داشت.
در map در صورتی که کلیدی وجود نداشته باشد مقدار صفر (zero value) متناظر با value آن برمیگردد. با استفاده از یک متغیر دوم میتوانیم صحت وجود داشتن مقدار برگردانده شده را بررسی کنیم.
همانطور که در مثال بالا دیدیم در صورتی که کلید مورد نظر ما مقداردهی شده باشد ok برابر با true خواهد بود.
برای حذف یک کلید از map میتوانیم از تابع delete استفاده کنیم, به مثال زیر دقت کنید:
برای نمایش مقادیر درون یک map میتونید از حلقه for-range نیز استفاده کنید:
قسمت قبلی: حلقه ها | گولنگ به زبان ساده
قسمت بعدی: تابع (function) | گولنگ به زبان ساده