زبان برنامهنویسی گو/نقشهها (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
}
جمعبندی نقشهها
ویرایشنقشهها در زبان برنامهنویسی گو یکی از ساختارهای دادهای بسیار مفید برای ذخیرهسازی و مدیریت دادههای کلید-مقدار هستند. این نوع داده به شما اجازه میدهد تا بهصورت سریع و کارآمد به دادهها دسترسی داشته باشید، آنها را بهروزرسانی کنید یا حذف کنید. با استفاده از قابلیتهای نقشهها، میتوانید برنامههای قدرتمندی ایجاد کنید.