آموزش زبان برنامه نویسی Go + دانلود فیلم رایگان گو
Go (که با نام Golang نیز شناخته میشود)، یک زبان برنامهنویسی متن باز است. گوگل سازندهی اصلی این زبان است. این زبان از نوع کامپایل استاتیک است. گام ۱: برای دانلود زبان برنامه نویسی Go به آدرس پس از پایان نصب، میتوانید با باز کردن ترمینال و تایپ دستور زیر، آن را تایید کنید. این دستور نسخهی Go نصبشده را نشان میدهد. آموزش پروژه محور زبان برنامه نویسی Go در این بخش از آموزش گام به گام زبان برنامه نویسی Go پوشهای با نام studyGo بسازید. میتوانید با استفاده از دستور زیر، برنامههای Go را اجرا کنید: با استفاده از دستور زیر برنامه را اجرا کنید. میبینید که خروجی زیر چاپ میشود. package main: هر برنامهی Go باید با یک نام پکیج شروع شود. Go به ما این امکان را میدهد که از پکیجها در سایر برنامههای Go استفاده کنیم و اینطور از قابلیت استفادهی مجدد از کد پشتیبانی میکند. اجرای برنامه از قطعه کدی داخل پکیج main آغاز میشود. func main (): این همان تابعی است که اجرای برنامه از آن آغاز میشود. PrintLn: این کد از تابع PrintLn موجود در پکیج fmt استفاده میکند و متن خروجی را چاپ میکند. در ادامهی این آموزش Go، وقتی میگوییم کد را اجرا کنید، منظورمان این است که کد موجود در فایل Go را ذخیره و سپس آن را با استفاده از دستور زیر اجرا کنید: انواع داده در برنامه نویسی Go ، نشاندهندهی نوع مقداری است که در یک متغیر ذخیره میشود یا نوع مقداری که یک تابع برمیگرداند و …. این انواع نشاندهندهی اعداد صحیح (Integer)، ممیز شناور (Floating Point) و مقادیر مختلط (Complex) هستند. تعریف متغیرها در زبان برنامه نویسی گو (Variable) پارامتر type (در دستور زیر) نوع دادهای را نشان میدهد که میتوانیم در آن مکان حافظه ذخیره کنیم. برای چگونگی تعریف متغیر در زبان برنامه نویسی Go با ادامه مقاله همراه باشید. با استفاده از دستور زیر میتوانیم متغیر تعریف کنیم: با استفاده از دستور زیر میتوانید هنگام تعریف متغیر به آن یک مقدار اولیه نیز بدهید: پس میتوانید با استفاده از سینتکس زیر، type را از آن حذف کنید: با دستور زیر میتوانید چند متغیر تعریف کنید: Println («x:» , x) //prints ۳ //declaring a integer variable y with value ۲۰ in a single statement and prints it //declaring a variable z with value ۵۰ and prints it //Multiple variables are assigned in single line- i with an integer and j with a string Go برای تعریف سادهتر متغیرها دستور زیر را دارد که var در آن حذف شده است: توجه کنید که در دستور بالا به جای = از: = استفاده میکنیم. نمیتوانید از: = برای متغیری که قبلا تعریف شده است، استفاده کنید. از: = برای تعریف متغیر و مقداردهی به آن استفاده میشود. در زبان برنامه نویسی Go آن دسته از متغیرهایی هستند که نمیتوانیم مقدار آنها را پس از تعیین عوض کنیم. go را اجرا کنید تا نتایج زیر را ببینید: go را اجرا کنید تا نتایج زیر را ببینید: دستور این حلقه به شکل زیر است: سپس evaluation_expression بررسی میشود و در صورت برقرار بودن شرط، کد درون بلوک اجرا میشود. اگر برقرار باشد، بلوک دستورات مجددا اجرا میشود. دستورات زیر را در یک فایل Go کپی و آن را اجرا کنید. سینتکس آن به صورت زیر است: در اینجا condition بررسی میشود و اگر true باشد، statements_۱ اجرا میشود. در صورت false بودن، statements_۲ اجرا میشود. میتوانید دستور if را بدون else نیز اجرا کنید. هم چنین میتوانید چند دستور if else را به هم وصل کنید. در برنامهی زیر بیشتر با دستور if else آشنا میشوید. این برنامه بررسی میکند که یک عدد، x، کمتر از ۱۰ است یا نه. در اینجا چون مقدار x بیشتر از ۱۰ است، عبارت درون بلوک شرط if اجرا نمیشود. حالا به برنامهی زیر دقت کنید. یک بلوک else داریم که اگر شرط درست نباشد، اجرا میشود. حالا بیایید یک برنامه دارای چندین دستور if else را ببینیم (chained if-else). مثال زیر را اجرا کنید. این برنامه بررسی میکند که یک عدد کمتر از ۱۰، بین ۱۰-۹۰ یا بیشتر از ۹۰ است. در این برنامه اول شرط if (if condition) بررسی میکند که آیا x کمتر از ۱۰ است یا نه. سپس بلوک زیر else را اجرا میکند که خروجی زیر را به ما میدهد: Switch یکی دیگر از دستورات شرطی زبان برنامه نویسی گو است. دستورات Switch یک Statement را بررسی میکنند و نتیجهی آن با مجموعهای از مقادیر موجود (Switch Case) مقایسه میشود. با اضافه کردن یک بلوک default به Switch، در صورت پیدا نشدن نمونهی مشابه، این بلوک اجرا میشود. در اینجا مقدار expression با مقادیر هر case مقایسه میشود. وقتی نمونهای مشابه پیدا شد، دستور آن Case اجرا میشود. وقتی نمونهای مشابه پیدا شد، دستور آن Case اجرا میشود. اگر نمونهی مشابه پیدا نشد، دستور بلوک default اجرا میشود. در زبان برنامه نویسی گو در زبان برنامه نویسی گو دستور تعریف آرایه به صورت زیر است: میتوانید با دستور زیر به هر المنت آرایه مقدار بدهید: میتوانید در زمان تعریف با دستور زیر به المنتهای آرایه مقدار بدهید: وقتی از دستور بالا استفاده میکنید، میتوانید پارامتر size را حذف کنید و … بگذارید. دستور زیر را ببینید: با استفاده از دستور زیر میتوانید اندازهی یک آرایه را بفهمید: کد زیر را برای فهمیدن بهتر آرایهها اجرا کنید: var numbers [۳] string //Declaring a string array of size ۳ and adding elements Println (len (numbers)) //prints ۳ Println (numbers) // prints [One Two Three] Println (numbers) // prints [One Two Three] Println (directions) //prints [۱ ۲ ۳ ۴ ۵] Println (len (directions)) //prints ۵ میتوانید مثل یک آرایه، با استفاده از نام و ایندکس به المنتهای یک Slice دسترسی داشته باشید. نمیتوانید اندازهی آرایه را تغییر دهید، اما اندازهی Slice قابل تغییر است. با دستور زیر میتوانید یک Slice بسازید: این دستور یک Slice با نام slice_name از آرایهی array_name میسازد که از ایندکس start شروع و به ایندکس end-۱ ختم میشود. این برنامه یک Slice از یک آرایه میسازد و آن را نمایش میدهد. var b [] string = a [۱: ۴] //created a slice named b Println («Array after slice modification:» ,a) توابع مشخصی داریم که میتوانیم از آنها برای یک Slice استفاده کنیم. : از این تابع برای اضافه کردن value_۱ و value_۲ به یک Slice موجود استفاده میشود. Println («Slice_b:» , slice_b) Println («Slice_b:» , slice_b) این برنامه اول دو Slice میسازد و طولشان را چاپ میکند. در تعریف یک تابع، نام تابع، نوع مقدار خروجی و پارامترهای ورودی را میبینیم. دستور تعریف یک تابع به شکل زیر است: بیایید مثال زیر را اجرا کنیم. تابع calc زیر دو مقدار را میگیرد، حاصل جمع و تفریق آنها را محاسبه کرده و هر دو را به عنوان خروجی برمیگرداند. // (int, int) says that the function returns two values, both of integer type. packageها در زبان برنامه نویسی Go برای سازماندهی کدها استفاده میشود. یک برنامهی قابل اجرای Go دارای یک پکیج به نام main است و برنامه با اجرای تابع main آغاز میشود. با دستور زیر میتوانید پکیجهای دیگر را به برنامه ایمپورت کنید: go بسازید و کد زیر را به آن اضافه کنید: go بسازید و کد زیر را به آن اضافه کنید: go بسازید و کد زیر را به آن اضافه کنید: با این کد تابع Do-add را از پکیج calculation فراخوانی میکنید. در سیستم عامل مک، دستور echo $PATH را اجرا کنید: در ویندوز، مسیر نصب را با اجرای دستور echo ٪GOROOT٪ پیدا کنید: go در پوشهی calculation بسازید (میتوانید هر نامی برایش انتخاب کنید، اما نام پکیج در برنامه مهم است. در اینجا باید calculation باشد) و کد زیر را به آن اضافه کنید: دقت کنید که نام تابع Do_add با حرف بزرگ شروع میشود. در Go، اگر نام تابع با حرف بزرگ شروع شود، از سایر برنامهها قابل دسترسی است و در غیر این صورت قابل دسترسی نخواهد بود. اگر نام تابع do_add بود شما پیغام خطای ‘cannot refer to unexported name calculation. Defer و Deferهای استک شده در زبان برنامه نویسی Go از دستور Defer در زبان GO برای عقب انداختن اجرای یک تابع استفاده میشود تا زمانی که تابع حاوی دستور Defer اجرای خود را به پایان برساند. Deferهای استک شده درواقع استفاده از چند دستور Defer است. Go فراخوانی تمام توابع را در یک استک قرار میدهد و زمانی که اجرای تابع حاوی کدها به پایان رسید، توابع درون استک به صورت میتوانید آن را در مثال زیر ببینید. در کد بالا، اول کدهای درون تابع main () اجرا میشوند و سپس فراخوانیهای توابع Defer به صورت معکوس اجرا میشوند، به عبارت دیگر به صورت ۴، ۳، ۲، ۱. از عملگر ; برای گرفتن آدرس متغیر استفاده میشود. دستور زیر را اجرا کنید تا مقدار و آدرس یک متغیر را ببینید: خروجی به صورت زیر است: خروجی به صورت زیر است: خروجی به صورت زیر است: خروجی به صورت زیر است: میتوانید با استفاده از دستور زیر یک اشارهگر تعریف کنید: //Create an integer variable a with value ۲۰ //Create a pointer variable b and assigned the address of a //print address of a (;a) and value of a برای استفاده از یک Structure باید دو مرحله را طی کنید. میتوانید به دو صورت این اطلاعات را ذخیره کنید. حالا آرایهای از این ساختار بسازید که هر المنت آرایه دارای نام، آدرس و سن است. با دستور زیر میتوانید یک ساختار تعریف کنید: در کد بالا، یک نوع تعریفی کاربر به نام emp ساخته میشود. حالا میتوانید با استفاده از دستور زیر متغیرهای این نوع را تعریف کنید: میتوانید مقادیر empdata۱ را به صورت زیر تعریف کنید: میتوانید با استفاده از کد زیر نیز متغیر ساختار بسازید و به آن مقدار بدهید: Raj مقدار متغیر name، مقدار بعدی برای متغیر address و مقدار آخر age است. کد زیر را اجرا کنید: کد زیر را اجرا کنید: //function which accepts variable of emp type and prints name property // declares a variable, empdata۱, of the type emp //declares and assign values to variable empdata۲ of type emp //prints the member name of empdata۱ and empdata۲ using display function این مقدار بین کلمهی کلیدی func و نام متد قرار میگیرد. دستور یک متد به صورت زیر است: بیایید برنامهی بالا را تغییر دهیم تا به جای تابع از متد استفاده کند: //Declaring a function with receiver of the type emp func (e emp) display () { func (e emp) display () { //declaring a variable of type emp //declaring a variable of type emp and assign values to members در این آموزش توضیح میدهیم که چگونه اولین برنامه خود به زبان Ruby را به آسانی ایجاد نمایید. در اجرای موازی، یک وظیفه به وظایف کوچکتر تقسیم میشود و این وظایف به صورت موازی اجرا میشوند. تابعی است که میتواند به صورت همروند با سایر توابع اجرا شود. معمولا وقتی تابعی فراخوانی میشود، کنترل اجرا به آن داده میشود تا اجرای آن پایان یابد. بعد از آن این تابع اجرای خود را ادامه میدهد. این تابع منتظر پایان اجرای تابعی که فراخوانی کرده میماند و پس از پایان اجرا، اجرای سایر دستورات را از سر میگیرد. میتوانید در یک برنامه چند Goroutine داشته باشید. میتوانید یک Goroutine را با دستور زیر فراخوانی کنید. در این مثال، برنامهی اصلی پیش از شروع اجرای Goroutine به پایان میرسد. display () یک Goroutine است که با دستور زیر فراخوانی میشود: به همین دلیل دستور print درون display () نمایش داده نشد. حالا برنامه را به گونهای تغییر میدهیم که دستور درون display () را نیز نشان دهد. خروجی چیزی به شکل زیر است: کانال روشی است تا توابع بتوانند با استفاده از آن با هم ارتباط داشته باشند. با استفاده از دستور زیر میتوانید یک کانال تعریف کنید: میتوانید با استفاده از دستور زیر به یک کانال داده بفرستید: میتوانید با استفاده از دستور زیر از یک کانال داده بردارید: اگر یک Goroutine در کانال داده بگذارد، main () روی دستور دریافت داده منتظر میماند تا دادهها را دریافت کند. سپس به جای Goroutine از کانال استفاده کنید و رفتار آنها را نیز بررسی کنید. پس دستور print درون display () اجرا نشد. حالا در برنامهی بالا از دستور کانال استفاده و رفتارش را بررسی کنید. func display (ch chan int) { Println («Inside display ()») Println («Inside display ()») Println («Printing x in main () after taking from channel:» ,x) Printing x in main () after taking from channel: ۱۲۳۴ در برنامهی بالا main () بعد از رسیدن به دستور: =<-ch منتظر دادههای کانال ch میماند. main () که روی دستور دریافت منتظر است، از حالت قفل خارج میشود و به اجرای دستوراتش ادامه میدهد. این رویکرد زمانی کاربرد دارد که از حلقهها برای فرستادن داده به یک کانال استفاده میکنیم. میتوانیم یک کانال را با دستور زیر ببندیم: میتوانید از کانالها برای ارتباط بین Goroutineها نیز استفاده کنیم. func add_to_channel (ch chan int) { //This subroutine fetches data from the channel and prints it. func fetch_from_channel (ch chan int) { //creating a channel variable to transport integer values Println («Inside main ()») Println («Inside main ()») Println («Inside main ()») Println («Inside main ()») تابع add_to_channel اعداد ۰ تا ۹ را به کانال اضافه کرده و آن را میبندد. به صورت همزمان، تابع fetch_from_channel در دستور x, flag: = <- ch منتظر رسیدن دادهها میماند و با رسیدنشان آنها را نمایش میدهد. دستور Select در زبان Go را میتوانیم یک دستور Switch در نظر بگیریم که روی کانالها اجرا میشود. اگر هریک از Caseها آماده باشد (کانال خوانده شده)، آنوقت دستور مرتبط به Case اجرا میشود. اگر چند دستور Case آماده باشند، یک دستور به صورت تصادفی انتخاب میشود. یک Case هم به صورت default داریم که در صورت آماده نبودن هیچیک از Caseها اجرا میشود. //Both case statements wait for data in the chan۱ or chan۲. در کد بالا دستور Select منتظر آماده شدن داده در کانالها میشود. data۲ () پس از تاخیر دو ثانیهای به کانال داده اضافه میکند که موجب اجرا شدن Case دوم میشود. یک default case به همان برنامه اضافه کرده و خروجی را ببینید. در کد زیر، با رسیدن به Select، اگر هیچ کانالی دادهی آماده نداشت، بلوک default بدون انتظار برای رسیدن داده اجرا میشود. func data۲ (ch chan string) { func data۲ (ch chan string) { //creating channel variables for transporting string values //creating channel variables for transporting string values //invoking the subroutines with channel variables //invoking the subroutines with channel variables //Both case statements check for data in chan۱ or chan۲. //So the default block will be executed without waiting for data in channels. این خروجی برنامه است. چون هیچ کانالی داده نداشت، default case اجرا شده است. پس باید پکیج sync را به درون برنامه ایمپورت کنید. این برنامه تعداد اجرای یک حلقه را میشمارد. این روتین را ۳ بار اجرا میکنیم که مجموع کل ۳۰ میشود. این مجموع در یک متغیر سراسری count ذخیره میشود. اول، برنامه را بدون Mutex اجرا کنید: در کد بالا ۳ Goroutine میخواهند مقدار متغیر count را افزایش دهند. فرض کنید که پس از پایان اجرای گام ۳ توسط goroutine۱، یک Goroutine دیگر که دارای مقدار قبلی ۳ است، مراحل بالا را تکرار و مقدار ۴ را ذخیره میکند، که غلط است. در این شرایط میتوانیم از Mutex استفاده کنیم. اگر یکی از روتینها در حال استفاده از متغیر باشد، Mutex نمیگذارد سایر روتینها به آن دسترسی داشته باشند. حالا برنامه را با Mutex اجرا کنیم. در کد زیر سه گام بالا در یک Mutex اجرا میشوند. چون دستورات خواندن، افزایش و نوشتن مقدار در count در یک Mutex اجرا میشود. با استفاده از این قابلیت میتوانید خطاهای شخصی بسازید. میتوانید با استفاده از new () در پکیج error از این قابلیت استفاده کنید. برنامهی زیر را اجرا کنید: برنامهی زیر را اجرا کنید: برنامهی زیر را اجرا کنید: برنامهی زیر را اجرا کنید: برنامهی زیر را اجرا کنید: برنامهی زیر را اجرا کنید: برنامهی زیر را اجرا کنید: Println (error) خروجی به شکل زیر است: خروجی به شکل زیر است: خروجی به شکل زیر است: خروجی به شکل زیر است: خروجی به شکل زیر است: خروجی به شکل زیر است: خروجی به شکل زیر است: خروجی به شکل زیر است: خروجی به شکل زیر است: خروجی به شکل زیر است: خروجی به شکل زیر است: خروجی به شکل زیر است: از فایلها برای ذخیرهی داده استفاده میشود. txt را در پوشهی کنونی بسازید و محتوای زیر را در آن کپی کنید: حالا برنامهی زیر را اجرا کنید. Println («Contents of file:» , string (data)) از دستور WtiteLine () برای نوشتن در فایل استفاده میشود. بعد از آن با استفاده از دستور Close () میتوانید فایل را ببندید. در این آموزش زبان برنامه نویسی Go موضوعات زیر را بررسی کردیم: var slice_name [] type = array_name [start: end] var slice_name [] type = array_name [start: end] func function_name (parameter_۱ type, parameter_n type) return_type {//statements} برای سازماندهی کدها از پکیج استفاده میشود. Declare: ch: = make (chan int) Send data to channel: channel_variable <- variable_name Receive from channel: variable_name: = <- channel_variable Select را میتوانیم یک دستور Switch درنظر بگیریم که روی کانالها اجرا میشود. معمولا، هر دستور Case یک تلاش برای خواندن کانال است. معمولا، هر دستور Case یک تلاش برای خواندن کانال است. Println (x) case y: = <-chan۲: fmt. آموزش زبان برنامه نویسی GO آموزش زبان برنامه نویسی GO آموزش زبان برنامه نویسی GO آموزش زبان برنامه نویسی Rust همانطور که مشاهده کردید در این بخش از سایت فرانش، دانلود و نصب کامپایلر، ساختار زبان برنامه نویسی Go، چگونگی ایجاد آن، انواع داده و بررسی متغیرها را آموزش دادیم.
متن کامل نوشته در سایت فرانش
نظرات