حامد

حامد

.1ماه

@hamed

پوینترها در golang

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

اگه زبون هایی مثل c++ کار کرده باشید، احتمالا مفهوم اشاره گر ها توی گولنگ براتون مثل اسباب بازی باشه. چون خیلی ساده تر و محدود شده تره.

برای تعریف یه متغیر به عنوان یه پوینتر، قبل از نوع داده فقط یه ستاره میزاریم. مثلا:

var x *int

و برای مقدار دهیش، آدرس اون متغیر اصلی که میخوایم بهش اشاره کنیم رو مقدار x قرار می‌دیم. گذاشتن & قبل از متغیر، آدرس اون متغیر توی حافظه رو به ما برمیگردونه.

x = &y

تموم شد. الان x یه پوینتر هست به y.

برای تنظیم مقدار y از طریق اشاره‌گرش(x) یه * قبل از متغیر اشاره گر(x) میزاریم.

*x = 3

توی این حالت، مقدار y به 3 تغییر پیدا می‌کنه.

ممکنه اولش گیج کننده باشه، ولی برای * دو تا کاربرد کلی وجود داره برای دو تا مفهوم جدا: تعریف پوینتر و دریافت مقدار متغیری که پوینتر به آن اشاره میکنه. برای تعریف پوینتر، علامت * قبل از نوع داده قرار میگیره. برای دسترسی به مقدار اصلی * قبل از خود متغیر پوینتر قرار میگیره.