زبان برنامه‌نویسی گو/نقشه‌ها (Maps)

اسلایس‌ها(Slices) نقشه‌ها (Maps) ساختارها (Structs)
زبان برنامه‌نویسی گو


نقشه‌ها در زبان برنامه‌نویسی گو

ویرایش

نقشه (Map) یکی از ساختارهای داده در زبان برنامه‌نویسی گو است که برای ذخیره‌سازی داده‌ها به‌صورت **کلید-مقدار** (Key-Value) استفاده می‌شود. هر کلید باید یکتا باشد و به یک مقدار مرتبط است. نقشه‌ها به دلیل سرعت بالای جستجو، حذف و درج داده‌ها، یکی از ابزارهای اصلی برای مدیریت مجموعه‌های داده در برنامه‌های گو هستند.

تعریف نقشه

ویرایش

برای تعریف نقشه‌ها در زبان گو از کلمه کلیدی map استفاده می‌شود. نحوه تعریف نقشه به شکل زیر است:

map[کلید]مقدار

ایجاد نقشه

ویرایش

نقشه‌ها را می‌توان به سه روش اصلی ایجاد کرد:

ایجاد نقشه با استفاده از مقداردهی مستقیم

ویرایش
package main

import "fmt"

func main() {
    // تعریف و مقداردهی اولیه نقشه
    person := map[string]int{
        "Ali":  30,
        "Reza": 25,
        "Sara": 27,
    }

    fmt.Println(person) // خروجی: map[Ali:30 Reza:25 Sara:27]
}

ایجاد نقشه با استفاده از تابع make

ویرایش

تابع make برای ایجاد نقشه‌های خالی استفاده می‌شود:

package main

import "fmt"

func main() {
    // ایجاد نقشه خالی
    person := make(map[string]int)
    person["Ali"] = 30
    person["Reza"] = 25
    fmt.Println(person) // خروجی: map[Ali:30 Reza:25]
}

تعریف نقشه بدون مقداردهی

ویرایش

اگر نقشه‌ای بدون مقداردهی اولیه ایجاد شود، مقدار اولیه آن nil خواهد بود و نمی‌توان به آن مقدار اضافه کرد:

package main

import "fmt"

func main() {
    var person map[string]int
    fmt.Println(person == nil) // خروجی: true
}

عملیات‌های اصلی روی نقشه

ویرایش

عملیات‌های اصلی که می‌توان روی نقشه‌ها انجام داد عبارتند از:

افزودن یا به‌روزرسانی مقادیر

ویرایش

برای افزودن یک مقدار جدید یا به‌روزرسانی مقدار موجود از کلید استفاده می‌شود:

package main

import "fmt"

func main() {
    person := make(map[string]int)
    person["Ali"] = 30        // افزودن مقدار
    person["Ali"] = 31        // به‌روزرسانی مقدار
    fmt.Println(person["Ali"]) // خروجی: 31
}

خواندن مقادیر

ویرایش

برای دسترسی به یک مقدار، کافی است کلید مربوطه را در نقشه فراخوانی کنید:

package main

import "fmt"

func main() {
    person := map[string]int{"Ali": 30, "Reza": 25}
    fmt.Println(person["Ali"]) // خروجی: 30
}

حذف مقادیر

ویرایش

برای حذف یک کلید-مقدار از نقشه، از تابع delete استفاده می‌شود:

package main

import "fmt"

func main() {
    person := map[string]int{"Ali": 30, "Reza": 25}
    delete(person, "Ali")
    fmt.Println(person) // خروجی: map[Reza:25]
}

بررسی وجود یک کلید

ویرایش

برای بررسی اینکه یک کلید در نقشه وجود دارد یا خیر، می‌توان از مقدار دوم که تابع نقشه بازمی‌گرداند استفاده کرد:

package main

import "fmt"

func main() {
    person := map[string]int{"Ali": 30, "Reza": 25}
    value, exists := person["Ali"]
    if exists {
        fmt.Println("Ali exists with value", value) // خروجی: Ali exists with value 30
    } else {
        fmt.Println("Ali does not exist")
    }
}

پیمایش نقشه

ویرایش

برای پیمایش مقادیر موجود در نقشه از حلقه for استفاده می‌شود:

package main

import "fmt"

func main() {
    person := map[string]int{"Ali": 30, "Reza": 25, "Sara": 27}
    for key, value := range person {
        fmt.Println(key, ":", value)
    }
}

خروجی:

Ali : 30
Reza : 25
Sara : 27

ویژگی‌های نقشه

ویرایش
  • **کلیدها باید از نوع مقایسه‌پذیر باشند:** انواع داده‌ای مانند string، int، و float به‌عنوان کلید قابل استفاده هستند، اما انواع پیچیده مانند slice یا map قابل استفاده نیستند.
  • **مقدار پیش‌فرض برای کلیدهای ناموجود:** اگر کلیدی که وجود ندارد خوانده شود، مقدار صفر نوع داده (Zero Value) بازگردانده می‌شود:
package main

import "fmt"

func main() {
    person := map[string]int{"Ali": 30}
    fmt.Println(person["Reza"]) // خروجی: 0
}

جمع‌بندی نقشه‌ها

ویرایش

نقشه‌ها در زبان برنامه‌نویسی گو یکی از ساختارهای داده‌ای بسیار مفید برای ذخیره‌سازی و مدیریت داده‌های کلید-مقدار هستند. این نوع داده به شما اجازه می‌دهد تا به‌صورت سریع و کارآمد به داده‌ها دسترسی داشته باشید، آن‌ها را به‌روزرسانی کنید یا حذف کنید. با استفاده از قابلیت‌های نقشه‌ها، می‌توانید برنامه‌های قدرتمندی ایجاد کنید.