پرش به محتوا

زبان برنامه‌نویسی گو/نقشه‌ها (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
}

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

[ویرایش]

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