در خدمت شما دوستان عزیر هستیم با آموزش برنامه نویسی Go – کار با متغیر های برنامه نویسی GO از وب سایت آموزشی سورس باران. در این جلسه کار با متغیر های برنامه نویسی GO آشنا خواهید شد. لطفا با ما همراه باشید…
متغیر نام می باشد که به حافظه داده می شود تا برنامه مورد نظرمان قابل دستکاری باشد. هر متغیر در زبان برنامه نویسی Go یک نوع خاص دارد که سایز و چیدمان متغیر در حافظه ،محدوده مقدارها که میتوانند داخل حافظه ذخیره شوند، همچنین عملیاتی که میتواند به متغیر اعمال شوند را مشخص میکند نام یک متغیر میتواند شامل حروف،اعداد و کاراکتر زیر خط باشد. میتواند با یک حرف یا یک زیر خط شروع شود همچنین این زبان به حروف کوچک وبزرگ حساس است همچنین این زبان به ما اجازه تعریف انواع دیگر متغیر ها را می دهدکه در بخش های بعدی به آنها خواهیم رسید.
تعریف متغیر در زبان برنامه نویسی Go
منظور از تعریف متغیر این است که کامپایلر بگوییم که چقدر حافظه را اشغال کند.
var variable_list optional_data_type;
optional_data_type یک نوع داده در زبان GOاست که شامل : byte, int, float32, complex64, boolean و هر شی دیگری که کاربر تعریف میکند، می باشد و variable_list شامل یک یا چند نام شناساگر که با کاما جدا میشوند ، می باشند. چند تعریف معتبر عبارتند از :
var i, j, k int; var c, ch byte; var f, salary float32; d = 42;
خط var i, j, k; هر سه متغیر را ازنوع int تعریف میکند متغیر ها میتوانند در هنگام تعریف مقداردهی شوند و نوع آن متغیر به وسیله کامپایلر براساس مقداری که به آن میدهیم مشخص میشود. این مقدار دهنده شامل یک نشانه معادل یک ثابت است مانند مثال زیر
variable_name = value;
بعضی از مثالها عبارتند از
d = 3, f = 5; // مقدار دهی از نوع عدد صحیح
برای تعریف بدون مقداردهی بایک طول حافظه یکسان وثابت بطور فرضی با مقدار null یا خالی مقداردهی خواهند شد.
تعریف نوع استاتیک یا ثابت در برنامه نویسی Go
یک متغیر نوع استاتیک به کامپایلر اطمینان میدهد که این یک متغیر موجود با نوع داده ونام معین است پس کامپایلر به کامپایل بیشتر بدون نیاز به جزئیات کامل درباره متغیر ادامه میدهد.کامپایلر به یک تعریف حقیقی از متغیر در زمان لینک کردن برنامه نیاز دارد.
مثال زیر را امتحان کنید. جایی که متغیر با یک نوع داده تعریف شده و در داخل تابع اصلی معرفی و مقداردهی شده است
package main import "fmt" func main() { var x float64 x = 20.0 fmt.Println(x) fmt.Printf("x is of type %T\n", x) }
وقتی که کد بالا کامپایل واجرا میشود نتیجه زیر بدست می آید.
20 x is of type float64
تعریف داده پویا در برنامه نویسی GO
یک متغیر نوع پویا(داینامیک) از کامپایلر در خواست میکند که نوع متغیر را براساس مقداری که به آن داده میشود مشخص کند.کامپایلر نیاز به نوع داده ثابت برای این کارندارد.
مثال زیر را امتحان کنید جایی که متغیر بدون نوع داده تعریف شده و داخل تابعMain تعریف و مقداردهی شده است. توجه داشته باشید در مورد نوعinference ما متغیر y راباعملگر:= مقداردهی کردیم درحالی متغیر “X”را با استفاده از عملگر “= “مقداردهی کردیم.
package main import "fmt" func main() { var x float64 = 20.0 y := 42 fmt.Println(x) fmt.Println(y) fmt.Printf("x is of type %T\n", x) fmt.Printf("y is of type %T\n", y) }
تعریف چندتایی متغیر در برنامه نویسی GO
متغیر هایی از انواع مختلف میتواند بااستفاده از نوع inference تعریف شوند.
مثال
package main import "fmt" func main() { var a, b, c = 3, 4, "foo" fmt.Println(a) fmt.Println(b) fmt.Println(c) fmt.Printf("a is of type %T\n", a) fmt.Printf("b is of type %T\n", b) fmt.Printf("c is of type %T\n", c) }
زمانیکه کد بالا اجرا شود نتیجه زیر بدست خواهد آمد
3 4 foo a is of type int b is of type int c is of type string Lvalue ها وRvalue ها
۲ اصطلاح در زبان برنامه نویسی Go وجود دارد :
- lvalue :اصطلاحاتی که به یک مکان حافظه به نام “lvalue”اشاره میکند.یک”lvalue” میتواند در قسمت چپ یا راست یک assignment قرار گیرد
- rvalue:اصطلاح rvalue به یک مقدارداده که در آدرس هایی در حافظه ذخیره شده اند،اشاره میکند. rvalue یک اصطلاح است که نمیتواند یک مقداررا قبول کندبه این معنی که یک rvalue معمولا در قسمت راست یک تعریف قرار میگیرند. متغیر ها lvalue هستند که در قسمت چپ یک تعریف قرار میگرند اعداد دقیق rvalue هایی هستند که مقداری به آن نسبت داده نمیشود ودر قسمت چپ نیز نمایش داده نمیشود مثال زیر یک دستور معتبر است.
اما مثال زیر یک دستور معتبر نیست خطای کامپایل می دهد :
10 = 20
لیست مطالب جلسه قبل برنامه نویسی Go
- آموزش برنامه نویسی Go – زبان برنامه نویسی گو چیست؟ آشنایی با زبان و محیط برنامه نویسی Go
- آموزش برنامه نویسی Go – ساختار برنامه نویسی GO
- آموزش برنامه نویسی Go – قواعد برنامه نویسی GO
- آموزش برنامه نویسی Go – انواع داده در برنامه نویسی GO
Go یک زبان Static-Type است (صرفا جهت اطلاع)
زبانهای Static نسبت به زبانهای Dynamic از سه مزیت عمده برخوردارند
- سرعت: چون در زبانهای Static نوع تمام دادهها از قبل مشخص میشود، سرعت اجرای برنامه به مراتب بالاتر از زبانهای Dynamic خواهد بود. در زبانهای Dynamic نوع دادهها به هنگام اجرا مشخص خواهد شد.
- امنیت: در زبانهای Static کامپایلر قادر است تمام دادهها و پارامترها را چک کند تا اگر برنامه نویس به صورت سهوی متغیری را در جای اشتباهی به کار برده بود، قبل از کامپایل برنامه به او هشدار داده شود.
- مستندات: مستندسازی کدها در زبانهای Dynamic نیاز به دقت بالایی دارد. برای مثال باید نوع پارامترهای یک تابع را در مستندات ذکر کنیم تا برنامه نویسان دیگر بدانند که قرار است چه نوع دادهای را به تابع ارسال کنند. اما در زبانهای Static نوع هر پارامتر جزیی از خود کد است و برنامه نویس با یک نگاه ساده به نحوه تعریف تابع میتواند اطلاعات زیادی درباره آن بدست آورد.
جدای از مزایایی که زبانهای Static ارائه میکنند، یک عیب بزرگ نیز دارند: اینکه Static هستند. درست است، Static بود نیک زبان شبیه چاقوی دولبه است. مزیت اصلی آن، همان عیب آن است.
در این زبانها باید مدام با Typeها سرو کله بزنید. برنامه نویسان زبانهای Dynamic به خوبی میدانند که Dynamic بودن زبان دلخواهشان، تا چه میزانی در سرعت کدنویسی شان تاثیر دارد.
خوشبختانه Go میتواند Type یک متغیر را از روی مقداری که به آن نسبت میدهیم تشخیص دهد. مثلا اگر عدد ۱۲ را در متغیر A بریزیم، Go متغیر A را از نوع int فرض خواهد کرد. این قابلیت شبیه سیستم Type Inference در زبان Haskell است.
وقتی چنین سیستم تشخیص Typeای را با مدل ساده و سریع کامپایل برنامهها ادغام کنید، متوجه میشوید که سرعت کدنویسی شما قابل رقابت با سرعت کدنویسی در زبانهای Dynamic خواهد بود.
جناب آقای Joe Armstrong خالق زبان برنامه نویسی Erlang و پلتفرم OTP در مورد زبان برنامه نویسی Go میگوید:
من فکر میکنم این زبان به سنت Unix و C برگشته و کمبودهای زبان C را جبران کرده است. من فکر نمیکنم که C++ یک پیشرفت در این زمینه بوده باشد. اما معتقدم که Go قطعا یک پیشرفت برای زبان C به حساب میآید. و از طرفی هم این افراد در گذشته با آدمهایی مثل Kernighan و امثال اون کار میکردن و اطمینان دارم که تجربه بسیار بالایی در ساخت زبانها برنامه نویسی دارن. این زبان خیلی ظریفانه مهندسی شده و از اول خیلی از ابزارهایی که احتیاج دارید در اون وجود داره. حتی اولین نسخهای هم که از این زبان منتشر شد در سطحی از تکامل قرار داشت که انگار سالها در حال توسعه بوده و در کل نظر من در مورد این زبان بسیار مثبت است.
پیشنهاد ویژه ۱ : مقالات و کتاب های آموزشی برنامه نویسی GO
پیشنهاد ویژه ۲ : فیلم های آموزشی زبان برنامه نویسی GO
The post آموزش برنامه نویسی Go – کار با متغیر های برنامه نویسی GO appeared first on آموزش برنامه نویسی.