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