آموزش کار با اشاره گر ها در برنامه نویسی GO

آموزش کار با اشاره گر ها در برنامه نویسی GO

در خدمت شما هستیم باآموزش کار با اشاره گر ها در برنامه نویسی 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.NoConcept & Description
1Go – Array of pointers

You can define arrays to hold a number of pointers.

2Go – Pointer to pointer

Go allows you to have pointer on a pointer and so on.

3Passing 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

  1. آموزش برنامه نویسی Go – زبان برنامه نویسی گو چیست؟ آشنایی با زبان و محیط برنامه نویسی Go
  2. آموزش برنامه نویسی Go – ساختار برنامه نویسی GO
  3. آموزش برنامه نویسی Go – قواعد برنامه نویسی GO
  4. آموزش برنامه نویسی Go – انواع داده در برنامه نویسی GO
  5. آموزش برنامه نویسی Go – کار با متغیر های برنامه نویسی GO
  6. آموزش کار با ثابت های برنامه نویسی GO
  7. ساخت تصمیم در GO و آموزش کار با عملگرها در برنامه نویسی GO
  8. آموزش کار با حلقه ها در برنامه نویسی GO
  9. آموزش کار با توابع در برنامه نویسی GO
  10. آموزش کار با Scope Rules در برنامه نویسی GO

 

پیشنهاد ویژه 1 : مقالات و کتاب های آموزشی برنامه نویسی GO

پیشنهاد ویژه 2 : فیلم های آموزشی زبان برنامه نویسی GO

5/5 - (1 امتیاز)

راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.

آموزش پروژه محور طراحی سایت با پایتون و جنگو مختص بازار کار
  • انتشار: ۲۴ فروردین ۱۳۹۸

دسته بندی موضوعات

آخرین محصولات فروشگاه

مشاهده همه

نظرات

بازخوردهای خود را برای ما ارسال کنید

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.