انواع دیتا استراکچر در گولنگ golang

در برنامه‌نویسی، دیتا استراکچرها برای نمایش و سازماندهی داده‌ها به صورت منطقی و ساختاری استفاده میشه. این ساختارها می‌توانند شامل یک یا چندین نوع داده باشن و به برنامه‌نویسان امکان مدیریت بهتر داده‌ها را بدهند.

  1. آرایه‌ها (Arrays): دیتا استراکچری با طول ثابت که مجموعه‌ای از عناصر از یک نوع داده را نگهداری می‌کند و داده های پشت سر هم قرار میگیرند.
var numbers [5]int

اسلایس‌ها (Slices): دیتا استراکچری مشابه آرایه با این تفاوت که طول آن متغیر است.

var sliceOfNumbers []int

نقشه‌ها (Maps): دیتا استراکچری که از یک مجموعه از جفت‌های کلید و مقدار برای نگهداری داده‌ها استفاده میکنه.

var person = map[string]string{&quotname&quot: &quotuncodev&quot, &quotage&quot: &quottwo&quot}

ساختارها (Structs): دیتا استراکچری که یک گروه از فیلدها را با نوع مشخص نگه میداره.

type Person struct { 
    Name string 
    Age  int 
} 
var john Person
  • کانال‌ها (Channels) : کانال‌ها در گولانگ برای ارتباط و تبادل داده بین گوروتین‌ها (goroutines) استفاده می‌شوند. گوروتین‌ها از کانال‌ها برای ارسال و دریافت داده به صورت همروند استفاده می‌کنند. کانال‌ها می‌توانند برای جلوگیری از مشکلات همروندی مانند deadlock استفاده شوند و اطمینان حاصل کنند که داده‌ها به ترتیب صحیح ارسال و دریافت می‌شوند.
ch := make(chan int)

اشاره‌گرها (Pointers) : اشاره‌گرها در برنامه‌نویسی یک نوع داده هستند که آدرس حافظه یک متغیر را نگهداری می‌کنند. به جای ذخیره مستقیم مقدار یک متغیر، اشاره‌گر به محلی در حافظه اشاره می‌کند که مقدار متغیر ذخیره شده است. این اشاره به امکان انجام عملیات مستقیم بر روی حافظه و به اشتراک گذاری داده‌ها بین توابع کمک می‌کند.

var x int = 42 
var pointerToX *int = &x 
fmt.Println(&quotValue of x:&quot, x) 
fmt.Println(&quotAddress of x:&quot, &x) 
fmt.Println(&quotValue through pointer:&quot, *pointerToX)

لیست‌ها (Lists): دیتا استراکچری که داده‌ها را به ترتیب خطی نگهداری میکنه. در زبان برنامه‌نویسی گولنگ مفهوم لیست (List) به صورت مستقیم به یک دیتا استراکچر خاص نمیپردازه. به جای لیست‌ها، اغلب از دیتا استراکچرهای دیگر مانند آرایه‌ها یا اسلایس‌ها برای نگهداری داده‌ها استفاده میشه.

numbers := []int{1, 2, 3, 4, 5} 
fmt.Println(&quotList of numbers:&quot, numbers)

صف‌ها (Queues): دیتا استراکچری که عناصر را به ترتیب وارد شدن (enqueue) و خروجی شدن (dequeue) نگهداری میکنه.در زبان golang ، مفهوم صف (Queue) معمولاً با استفاده از اسلایس‌ها (Slices) یا کانال‌ها (Channels) پیاده‌سازی میشه.

پشته‌ها (Stacks): دیتا استراکچری که عناصر را به ترتیب وارد شدن (push) و خروجی شدن (pop) نگهداری می‌کند.در زبان برنامه‌نویسی گولنگ می‌توانید مفهوم پشته (Stack) را با استفاده از اسلایس‌ها (Slices) یا اشاره‌گرها (Pointers) پیاده‌سازی کنید. پشته یک دیتا استراکچر است که اعضای آن به صورت Last In, First Out (LIFO) مدیریت میشن، به این معنا که آخرین عنصری که اضافه می‌شود، اولین عنصری است که خارج می‌شود.