در خدمت شما هستیم باآموزش کار با اشاره گر ها در برنامه نویسی 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
همانطور که میدانید هر متغیر یک مکان در حافظه است وهر مکانی نیز آدرس خودرا داردکه میتوان بااستفاده از عملگر(&) میتوان به آن دسترسی پیداکردمثال زیر آدرس متغیر تعریف شده را نشان میدهد
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.این کاربااستفاده از عملگر(*)انجام میشود و مقدارمتغیری که در آدرس مشخص شده وجودداردرا برمی گرداند.
مثال زیر استفاده از این متغیر است :
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 یک ثابت با مقدار صفر است که در کتابخانه های زیادی معرفی شده است مانند برنامه زیر
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
در بیشتر سیستم عامل ها برنامه ها اجازه دسترسی به آدرس صفر ندارند زیرا بوسیله خودسیستم عامل رزرو شده است هرچند عدد صفر اهمیت دارد اما به این معنی است که اشاره گر قصد دسترسی به آدرس حافظه ندارد اگر اشاره گر صفر باشد یعنی به چیزی دسترسی ندارد
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
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- انتشار: ۲۴ فروردین ۱۳۹۸
دسته بندی موضوعات
- آموزش برنامه نویسی
- آموزش کریپتو کارنسی (ارز دیجیتال)
- آموزش متنی برنامه نویسی
- پروژه برنامه نویسی
- فروشگاه
- فیلم های آموزشی
- #F
- ++C
- 3ds max
- Ada
- ADO.NET
- Adobe Flash
- Agile
- Ajax
- AngularJS
- Anime Studio
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- assembly
- AVR
- Azure
- Bootstrap
- Cassandra
- CCNA
- CCNP
- CCSP
- ChatGPT
- Cisco
- CMD
- COBOL
- CSS
- Cython
- Django
- Dreameaver
- Elixir
- EntityFramework
- Erlang
- Flash
- Go
- Groovy
- Haskell
- Htaccess
- HTML
- IOS
- Jade
- jquery
- Kendo UI
- Linq
- Linux
- LUA
- MariaDB
- maya
- Meteor
- MongoDB
- Mono Android
- MonoGame
- Mysql
- NoSQL
- Oracle
- Orchard
- Perl
- php
- PHPMyAdmin
- R
- Rational Rose
- Ruby
- Rust
- Scala
- Scrum Master
- SFML
- SharePoint
- SignalR
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- Vue 3
- WPF
- Xml
- آردوینو
- آموزش های پروژه محور
- آیونیک
- اتوکد
- الگوریتم تقریبی
- الگوریتم نویسی و فلوچارت
- امنیت
- اندروید
- اندروید استودیو
- انیمیشن سازی
- بازی سازی با Scratch
- بک ترک
- بیسیک فور اندروید
- پایتون
- پرولوگ
- پریمیر
- جاوا
- جاوا اسکریپت
- جنگو
- جوملا
- دارت
- دلفی
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- ساخت اتوران
- ساختمان داده ها
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کاتلین
- کامپایلرها
- کانستراکت
- کریستال ریپورت
- کلوژر
- گوگل آنالیتیکس
- گیت
- لاراول
- مای بی بی
- مایکروسافت پروجکت
- متریال دیزاین
- متلب
- معماری کامپیوتر
- مهندسی اینترنت
- میکروتیک
- نود جی اس
- نیوک
- هوش مصنوعی
- ویبولوتین
- ویژوال استودیو
- یونیتی
- کتاب های آموزشی
- Ada
- Ajax
- Android
- ASP.NET
- ASP.NET Core
- AVR
- clips
- CNC
- COBOL
- CQRS
- Cython
- Dreamweaver
- Elixir
- Entity Framework 4.0
- Erlang
- Go
- Groovy
- Haskell
- LINQ
- Lua
- Matlab
- MFC
- Node.js
- PERL
- php
- PLC
- Prolog
- React
- Rust
- Scala
- SFML
- SharePoint
- silver light
- VHDL
- VMware
- WinJS
- Workflow
- WPF
- XHTML
- Yii Framework
- اتوکد
- اچ تی ام ال
- اسمبلی
- اکتیو ایکس
- الگوریتم و فلوچارت
- انگولار
- اوبونتو
- اوراکل
- بازی سازی
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- بک ترک
- پاسکال
- پایان نامه
- پایتون
- پرولوگ
- جاوا
- جاوا اسکریپت
- جی کوئری
- حوملا
- داده کاوی
- دلفی
- رباتیک
- روبی
- زبان ماشین
- سئو
- ساختمان داده ها
- سایر کتاب ها
- سخت افزار
- سوئیفت
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- سیستم عامل
- سیستم های خبره
- شبکه و مجازی سازی
- شبیه سازی کامپیوتر
- طراحی الگوریتم
- فتوشاپ
- فریم ورک گتنا
- کاتلین
- کالی لینوکس
- کریستال ریپورت
- گزارش کارآموزی
- گوگل
- لیسپ
- متلب
- مقاله
- مهندسی نرم افزار
- نیوک
- هوش مصنوعی
- وب مستر
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس