Skip to content

Commit

Permalink
Update 1.10-map.md
Browse files Browse the repository at this point in the history
تصحیح متن
  • Loading branch information
r3a70 committed May 22, 2023
1 parent 491562e commit 183bafe
Showing 1 changed file with 16 additions and 13 deletions.
29 changes: 16 additions & 13 deletions content/chapter 1/1.10-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ weight: 1010
map[KeyType]ValueType
````
کلمه کلیدی `map` و بعد نوع کلید و در آخر هم نوع مقدار تعریف می‌شود.
- کلید: برای اشاره به یک مقدار ذخیره شده، به یک نام‌گذاری برای آن مقدار نیاز داریم و این یعنی «کلید» آن مقدار.
- کلید: برای اشاره به یک مقدار ذخیره شده، نیاز به یک نام‌ داریم و این یعنی «کلید» آن مقدار.
- مقدار کلید در یک مپ، باید {{< tooltip text="یکتا" note="unique" >}} باشد.
- محدودیت: برای تعریف کلید، از انواع تایپ‌هایی که {{< tooltip text="قابل مقایسه" note="comparable " >}} هستند، می‌توان استفاده کرد:
- Boolean(s)
Expand Down Expand Up @@ -49,7 +49,7 @@ map[KeyType]ValueType

```

- مقدار: محتوی داده‌ای است که کلید به آن اشاره می‌کند و برخلاف کلید، هیچ محدودیت برای انتخاب «نوع» آن وجود ندارد، به‌عنوان نمونه می‌توان از یک مپ دیگر برای مقدار استفاده کرد.
- مقدار: حاوی داده‌ای است که کلید به آن اشاره می‌کند و برخلاف کلید، هیچ محدودیت برای انتخاب «نوع» آن وجود ندارد، به‌عنوان نمونه می‌توان از یک مپ دیگر برای مقدار استفاده کرد.
({{< tooltip text="مپ‌های تودرتو" note="Nested Map" >}})
```
map[string]map[int]string
Expand All @@ -63,7 +63,7 @@ map[string]map[int]string
var sampleMap = map[keyType]valueType{keyName1:value1, keyName2:value2, ...}
var sampleMap map[keyType]valueType = map[keyType]valueType{}
```
- استفاده از علامت `=:`
- استفاده از علامت `=:` `short variable declaration`
```go
sampleMap := map[keyType]valueType{keyName1:value1, keyName2:value2, ...}
```
Expand All @@ -76,15 +76,15 @@ sampleMap := make(map[keyType]valueType)

## 1.10.4 مپ با مقدار nil

درصورت تعریف اولیه مپ توسط دستور `var sampleMap map[keyType]valueType` یک ماهیت مپ با مقدار nil تولید می‌شود که نمی‌توان بدون مقداردهی اولیه، روی آن عملیات ارسال و دریافت داده‌ انجام داد:
درصورت تعریف اولیه مپ توسط دستور `var sampleMap map[keyType]valueType` یک مپ با مقدار nil ساخته می‌شود که نمی‌توان بدون مقداردهی اولیه، روی آن عملیات ارسال و دریافت داده‌ انجام داد:
```go
var sampleMap map[uint8]int
sampleMap[13] = 9999999
//panic: assignment to entry in nil map
```
برای مقداردهی یک مپ nil:
برای مقداردهی یک مپ nil که به روش زیر ساخته اید:
```go
var m map[string]string
var m map[string]string
```
از روش‌های زیر می‌توان بهره گرفت:
```go
Expand Down Expand Up @@ -192,7 +192,7 @@ func main() {
```
{{< /tab >}}
{{< tab "D : Delete" >}}
جهت حذف مقادیر در مپ، از فانکشن `delete` متعلق به پکیج `builtin` استفاده می‌شود.
جهت حذف مقادیر در مپ، از تابع `delete` متعلق به پکیج `builtin` استفاده می‌شود.
```go
package main

Expand Down Expand Up @@ -258,11 +258,14 @@ func main() {
```

- این روش بیشتر به اسم `comma, ok` شناخته میشود و بسیاری از توابع چه در کتابخته استاندارد و چه کتابخانه های عمومی در گولنگ, از این نوع نام گذاری برای برگشت دادن مقدار و ارور پشتیبانی میکنند.
- در مثال بالا تمامی متغیر هایی که با `Exist` تمام میشوند برای برسی وجود و عدم وجود یک کلید در `مپ` استفاده میشوند, به این صورت که اگر مقدار مشخص شده در `مپ` وجود داشت مقدار برگشتی در این متغیر ها `true` خواهد بود و در غیر این صورت مقدار برگشتی `false`.

{{< playground url=55Ga1f_c8Fz >}}

## 1.10.8 مپ، یک جدول، یک منبع

وقتی یک مپ تعریف می‌شود، اگر مپ(های) دیگری از روی آن ساخته شو(نـ)د، دارای یک منبع برای ذخیره و دریافت اطلاعات خواهند بود. در مثال زیر، مپ `editorMap` از مپ `companyProfile` ایجاد و وقتی ویرایش می‌شود، مپ اصلی **نیز**،‌ ویرایش شده است.
وقتی یک مپ تعریف می‌شود، اگر مپ(های) دیگری از روی آن ساخته شو(نـ)د، دارای یک منبع `(بهش میگن reference type)` برای ذخیره و دریافت اطلاعات خواهند بود. در مثال زیر، مپ `editorMap` از مپ `companyProfile` ایجاد و وقتی ویرایش می‌شود، مپ اصلی **نیز**،‌ ویرایش میشود.
```go
package main
Expand Down Expand Up @@ -296,8 +299,8 @@ func main() {

## 1.10.9 پیمایش روی مپ

یکی از اصلی‌ترین اهداف ایجاد و نگهداری انواع تایپ‌های مربوط به مجموعه داده‌ها، امکان دسترسی به اجزای داده و انواع لوپ از ابزارهای آن است.
با استفاده از for-range می‌توان به اجزای یک داده‌ از نوع کلید-مقدار دسترسی داشت
یکی از اصلی‌ترین اهداف ایجاد و نگهداری انواع تایپ‌های مربوط به مجموعه داده‌ها `... map and `، امکان دسترسی به اجزای آن ها با استفاده از لوپ ها `در گولنگ فقط for-loop` است.
با استفاده از for-range می‌توان به اجزای یک داده‌ از نوع کلید-مقدار دسترسی داشت. به مثال زیر توجه کنید:
```go
package main
Expand All @@ -319,7 +322,7 @@ func main() {
}
```
خروجی
خروجی کد بالا:

```bash
user@system:~/go/src/temp❇ GO[1.19.3] 22:29:00
Expand All @@ -344,7 +347,7 @@ user@system:~/go/src/temp❇ GO[1.19.3] 22:29:02
0- Gopher is rodent animal and can running
1- owl is carnivorous animal and can flying
```
به نحوه چیدمان خروجی‌ها دقت کنید، درباره علت یکسان نبودن خروجی‌ها در اجراهای متعدد تحقیق کنید.
به نحوه چیدمان خروجی‌ها دقت کنید، درباره علت یکسان نبودن خروجی‌ها در اجراهای متعدد تحقیق کنید `تقلب کوچیک بهتون بدم :). مپ ها unordered هستن`.

## 1.10.10 تبدیل اطلاعات رشته − مپ − اسلایس

Expand Down Expand Up @@ -388,7 +391,7 @@ func main() {

## 1.10.11 خودآزمون

کد زیر را بررسی کنید و خروجی(های) آن را با ذهن خود پردازش کنید. سپس صحت آن(ها) را بررسی و درباره آن تحقیق کنید:
کد زیر را بررسی کنید و خروجی(های) آن را با در ذهن محاسبه کنید. سپس صحت آن(ها) را بررسی و درباره آن تحقیق کنید:
```go
package main
Expand Down

0 comments on commit 183bafe

Please sign in to comment.