در خدمت شما هستیم باآموزش کار با اشاره گر ها در برنامه نویسی GO از وب سایت آموزش برنامه نویسی سورس باران. استفاده از اشاره گر ها (Pointers) ساده و راحت است بعضی وظایف برنامه نویسی زبان Go با pointer راحتتر انجام میشود بقیه وظایف مثل فراخوانی از منبع بدون اشاره گر قابل انجام نیست. پس برای تبدیل شدن به برنامه نویس خوب زبان Go لازم است که این مبحث را خوب یاد بگیرید. در این جلسه آموزش کامل کار با اشاره گر ها یا Pointers رو خواهیم داشت…
آموزش کار با اشاره گر ها در برنامه نویسی GO
Pointers in Go are easy and fun to learn. Some Go programming tasks are performed more easily with pointers, and other tasks, such as call by reference, cannot be performed without using pointers. So it becomes necessary to learn pointers to become a perfect Go programmer.. As you know, every variable is a memory location and every memory location has its address defined which can be accessed using ampersand (&) operator, which denotes an address in memory. Consider the following example, which will print the address of the variables defined
همانطور که میدانید هر متغیر یک مکان در حافظه است وهر مکانی نیز آدرس خودرا داردکه میتوان بااستفاده از عملگر(&) میتوان به آن دسترسی پیداکردمثال زیر آدرس متغیر تعریف شده را نشان میدهد
1 2 3 4 5 6 7 8 |
package main import "fmt" func main() { var a int = 10 fmt.Printf("Address of a variable: %x\n", &a ) } |
خروجی کد بالا به شرح زیر است.
Address of a variable: 10328000
خب شما چگونگی دسترسی به حافظه را فهمیدید پایه کارهمین بود.
اشاره گر (Pointers ) چیست؟
یک اشاره گر متغیری است که آدرس متغیر دیگر را نگه می دارد قالب اصلی تعریف یک متغیر pointer مانند زیر است
var var_name *var-type
قالب،نوع اصلی یک اشاره گر است که باید یک نوع داده معتبر زبان سی باشد var-name نام متغیر اشاره گر است علامت ستاره ای در تعریف متغیر استفاده کردیم برای تعریف متغیر نیاز است ا در این دستورعلامت ستاره برای طراحی متغیر استفاده شده است مثال زیر یک تعریف متغیر است
var ip *int /* pointer to an integer */
var fp *float32 /* pointer to a float */
نوع اصلی داده تمام pointer ها integer,float,…میتواند باشد.یک عدد هگزادسیمال بزرگ آدرس حافظه رانشان می دهد.تنها تفاوت بین pointer با بانوع داده های دیگر،نوع داده ای که pointer استفاده میکند،است
چگونه از این اشاره گر استفاده کنیم؟
چند عملیات مهم وجود دارد که ما میتوانیم به کمک اشاره گر ها مکررا انجام دهیم.1
-ما یک متغیر اشاره گر تعریف میکنیم
2-آدرس یک متغیر را به آن می دهیم
3-بالاخره دسترسی به مقدار آدرس موجود در متغیرpointer.این کاربااستفاده از عملگر(*)انجام میشود و مقدارمتغیری که در آدرس مشخص شده وجودداردرا برمی گرداند.
مثال زیر استفاده از این متغیر است :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
package main import "fmt" func main() { var a int= 20 /* actual variable declaration */ var ip *int /* pointer variable declaration */ ip = &a /* store address of a in pointer variable*/ fmt.Printf("Address of a variable: %x\n", &a ) /* address stored in pointer variable */ fmt.Printf("Address stored in ip variable: %x\n", ip ) /* access the value using the pointer */ fmt.Printf("Value of *ip variable: %d\n", *ip ) } |
نتیجه کدبالا :
Address of var variable: 10328000
Address stored in ip variable: 10328000
Value of *ip variable: 20
اشاره گر های nil در برنامه نویسی Go
کامپایلر زبان برنامه نویسی go یک مقدار Nil به اشاره گر میدهد زمانیکه آدرس دقیقی ثبت مشده باشد اشاره گری که مقدار خالی به آن نسبت داده شود nil pointer نامیده میشود nil pointer یک ثابت با مقدار صفر است که در کتابخانه های زیادی معرفی شده است مانند برنامه زیر
1 2 3 4 5 6 7 8 9 |
package main import "fmt" func main() { var ptr *int fmt.Printf("The value of ptr is : %x\n", ptr ) } |
خروجی کد بالا :
The value of ptr is 0
در بیشتر سیستم عامل ها برنامه ها اجازه دسترسی به آدرس صفر ندارند زیرا بوسیله خودسیستم عامل رزرو شده است هرچند عدد صفر اهمیت دارد اما به این معنی است که اشاره گر قصد دسترسی به آدرس حافظه ندارد اگر اشاره گر صفر باشد یعنی به چیزی دسترسی ندارد
1 2 |
if(ptr != nil) /* succeeds if p is not nil */ if(ptr == nil) /* succeeds if p is null */ |
جزئیات اشاره گر ها در زبان برنامه نویسی GO
Sr.No | Concept & Description |
---|---|
1 | Go – Array of pointers
You can define arrays to hold a number of pointers. |
2 | Go – Pointer to pointer
Go allows you to have pointer on a pointer and so on. |
3 | Passing pointers to functions in Go
Passing an argument by reference or by address both enable the passed argument to be changed in the calling function by the called function. |
لیست مطالب جلسه قبل برنامه نویسی Go
- آموزش برنامه نویسی Go – زبان برنامه نویسی گو چیست؟ آشنایی با زبان و محیط برنامه نویسی Go
- آموزش برنامه نویسی Go – ساختار برنامه نویسی GO
- آموزش برنامه نویسی Go – قواعد برنامه نویسی GO
- آموزش برنامه نویسی Go – انواع داده در برنامه نویسی GO
- آموزش برنامه نویسی Go – کار با متغیر های برنامه نویسی GO
- آموزش کار با ثابت های برنامه نویسی GO
- ساخت تصمیم در GO و آموزش کار با عملگرها در برنامه نویسی GO
- آموزش کار با حلقه ها در برنامه نویسی GO
- آموزش کار با توابع در برنامه نویسی GO
- آموزش کار با Scope Rules در برنامه نویسی GO
پیشنهاد ویژه 1 : مقالات و کتاب های آموزشی برنامه نویسی GO
پیشنهاد ویژه 2 : فیلم های آموزشی زبان برنامه نویسی GO
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- انتشار: ۲۴ فروردین ۱۳۹۸
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- رپورتاژ
- فروشگاه
- فیلم های آموزشی
- ++C
- ADO.NET
- Adobe Flash
- Ajax
- AngularJS
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- AVR
- Bootstrap
- CCNA
- CCNP
- CMD
- CSS
- Dreameaver
- EntityFramework
- Go
- HTML
- IOS
- jquery
- Linq
- Mysql
- Oracle
- PHP
- PHPMyAdmin
- Rational Rose
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- WPF
- Xml
- آموزش های پروژه محور
- اتوکد
- الگوریتم تقریبی
- امنیت
- اندروید
- اندروید استودیو
- بک ترک
- بیسیک فور اندروید
- پایتون
- جاوا
- جاوا اسکریپت
- جوملا
- دلفی
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کانستراکت
- کریستال ریپورت
- لاراول
- معماری کامپیوتر
- مهندسی اینترنت
- هوش مصنوعی
- یونیتی
- کتاب های آموزشی
- Android
- ASP.NET
- AVR
- LINQ
- php
- Workflow
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس