متغیرها و ثابت ها در Go چیست؟ با مثال توضیح داده شد
متغیرها و ثابت ها مفاهیم اساسی در اکثر زبان های برنامه نویسی هستند. آنها بلوک های سازنده برای ذخیره و مدیریت داده ها هستند.
در این مقاله به نحوه کار متغیرها و ثابت در Go نگاهی خواهیم انداخت.
فهرست مطالب:
چگونه ثابت ها را در Go اعلام کنیم
متغیرها چیست؟
متغیر یک مکان ذخیره سازی است که با یک نام (یا شناسه) مشخص می شود که دارای یک مقدار است. این مقدار می تواند در طول اجرای برنامه تغییر کند (یا تغییر کند). به همین دلیل است که به آن متغیر می گویند.
به عنوان مثال:
myName := “temitope” fmt.Println(myName) myName:= ”oyedele” fmt.Println(myName)
ما یک متغیر با یک شناسه myName
ایجاد کردیم که دارای یک مقدار رشته است.
اگر متوجه شدید، ما مقدار را به رشته دیگری تغییر دادیم و میتوانیم چندین بار این کار را انجام دهیم زیرا متغیرها مجاز به انجام این کار هستند.
متغیرها به شما اجازه می دهند داده ها را ذخیره کنید، که می توانند انواع مختلفی مانند اعداد صحیح، اعداد ممیز شناور، رشته ها یا اشیا باشند.
نحوه ایجاد یک متغیر در Go
دو راه اصلی برای ایجاد یک متغیر در Go وجود دارد، اعلان صریح و اعلان کوتاه.
اعلامیه صریح
این روش سنتی برای ایجاد یک متغیر در Go است. با استفاده از کلمه کلیدی var
و اعلام نوع متغیر کار می کند و کد شما را خواناتر و واضح تر می کند.
package main import "fmt" func main () { var age int = 25 var name string = "Temitope" var height float64 = 5.7 fmt.Println(age, name, height) }
می بینید که برای هر متغیر، قبل از اینکه مقداری به آن اختصاص دهیم، نوع داده آن را اعلام کردیم.
output: 25 Temitope 5.7
کلمه کلیدی var
و نوع داده را می توان بدون داشتن مقدار اولیه نیز استفاده کرد:
package main import "fmt" func main () { var age int var name string var height float64 age = 25 name = "Temitope" height = 5.7 fmt.Println(age, name, height) }
به این ترتیب، متغیرها ابتدا بدون مقدار اولیه اعلام می شوند. سپس مقادیر بعدی در کد به آنها اختصاص داده می شود. شما همچنان همان خروجی اول را خواهید داشت.
اعلان متغیر مختصر
سینتکس اعلان متغیر مختصر ( :=
) روشی مختصرتر برای اعلان متغیرها است. این روش به شما این امکان را می دهد که یک متغیر را در یک خط واحد بدون بیان صریح نوع آن، تعریف و مقداردهی اولیه کنید، زیرا نوع از مقدار اختصاص داده شده استنباط می شود.
package main import "fmt" func main () { age := 25 name := "Temitope" height := 5.7 fmt.Println(age, name, height) }
در اینجا، هر متغیر در کنار مقدار خود، با Go استنباط نوع داده اعلام شد. به عنوان مثال، age
با مقدار 25 اعلام و مقداردهی اولیه شد و Go نوع آن را int
استنباط کرد. name
با مقدار "Temitope" اعلام شد و Go نوع آن را به عنوان string
استنباط کرد. در نهایت height
با 5.7 اعلام شد و Go نوع آن را float64
استنباط کرد.
output: 25 Temitope 5.7
یکی از اشکالات اعلان متغیر کوتاه این است که شما فقط می توانید از آن در داخل یک تابع استفاده کنید.
اعلامیه های متغیر چندگانه
با جدا کردن هر متغیر با کاما می توانید چندین متغیر را در یک خط اعلام و مقداردهی اولیه کنید. این رویکرد ساده و سرراست است. معمولاً زمانی استفاده می شود که متغیرها به هم مرتبط هستند یا زمانی که می خواهید آنها را با هم مقداردهی اولیه کنید. به عنوان مثال:
package main import "fmt" func main () { var age, height int = 25 , 180 var name, city string = "Temitope" , "New York" fmt.Println(age, height) fmt.Println(name, city) }
در اینجا متغیر age
و height
هر دو به صورت اعداد صحیح اعلام شده و به ترتیب با مقادیر 25 و 180 مقداردهی اولیه می شوند. name
متغیر و city
نیز هر دو به عنوان رشته اعلام می شوند و با "Temitope" و "New York" مقداردهی اولیه می شوند:
Output: 25 180 Temitope New York
شما همچنین می توانید چندین متغیر را در یک بلوک مانند زیر اعلام کنید:
package main import "fmt" func main () { var ( age int = 25 name string = "Temitope" height int = 180 city string = "New York" ) fmt.Println(age, name, height, city) }
در اینجا، متغیرهای age
، name
، height
و city
در یک بلوک var اعلان میشوند و هر متغیر خط خودش را دارد.
Output: 25 Temitope 180 New York
مقادیر صفر
هنگامی که متغیرها بدون مقداردهی اولیه اعلام می شوند، به طور پیش فرض به آنها مقادیر صفر اختصاص داده می شود. این مقادیر بسته به نوع متغیر متفاوت است. در زیر نمونه ای از نحوه اعلام مقادیر پیش فرض آورده شده است:
package main import "fmt" func main () { var intValue int var floatValue float64 var boolValue bool var stringValue string var ptrValue * int var sliceValue [] int var mapValue map [ string ] int fmt.Println( "Zero values:" ) fmt.Println( "int:" , intValue) fmt.Println( "float64:" , floatValue) fmt.Println( "bool:" , boolValue) fmt.Println( "string:" , stringValue) fmt.Println( "pointer:" , ptrValue) fmt.Println( "slice:" , sliceValue) fmt.Println( "map:" , mapValue) }
در کد بالا، در اینجا چیزی است که قرار است اتفاق بیفتد:
به عدد صحیح intValue
مقدار صفر 0 داده می شود.
به عدد ممیز شناور floatValue
مقدار صفر 0 داده می شود.
به boolValue
Boolean مقدار صفر false
داده می شود.
به رشته stringValue
مقدار صفر داده می شود "" (رشته خالی).
به نشانگر ptrValue
، slice sliceValue
و map mapValue
همگی مقدار nil
داده می شود.
خروجی:
Output: Zero values: int: 0 float64: 0 bool: false string: pointer: <nil> slice: [] map: map[]
دامنه متغیر چیست؟
متغیرها را می توان به صورت سراسری یا محلی اعلام کرد. محدوده یک متغیر تعیین می کند که در کد شما می توان به آن دسترسی پیدا کرد و آن را تغییر داد.
متغیرهای سراسری خارج از هر تابعی، معمولاً در بالای یک فایل، اعلان می شوند و توسط هر تابعی در همان بسته قابل دسترسی هستند. در اینجا یک مثال است:
package main import "fmt" var globalCounter int = 0 func incrementCounter () { globalCounter++ } func main () { fmt.Println( "Initial Counter:" , globalCounter) incrementCounter() fmt.Println( "After Increment:" , globalCounter) }
در مثال بالا، globalCounter
متغیر سراسری است و هم با تابع incrementCounter
و هم تابع main
قابل دسترسی است.
همچنین، مقدار globalCounter
در سراسر فراخوانی تابع باقی می ماند. این بدان معناست که هر تغییری در یک تابع در آن ایجاد شود، بر ارزش آن در سایر قسمت های برنامه تأثیر می گذارد.
از سوی دیگر، متغیرهای محلی در داخل یک تابع یا یک بلوک اعلان می شوند و فقط در آن تابع یا بلوک خاص قابل دسترسی هستند. آنها زمانی ایجاد می شوند که عملکرد یا بلوک اجرا می شود و پس از تکمیل آن از بین می رود. به عنوان مثال:
package main import "fmt" func incrementCounter () { localCounter := 0 localCounter++ fmt.Println( "Local Counter:" , localCounter) } func main () { incrementCounter() incrementCounter() }
در کد بالا، ما localCounter
به عنوان متغیر محلی داخل تابع incrementCounter
داریم. هر بار که incrementCounter
فراخوانی می شود، یک localCounter
جدید ایجاد می شود که به 0 مقداردهی اولیه می شود و افزایش می یابد.
مقدار localCounter
بین فراخوانیهای تابع باقی نمیماند، پس وقتی تغییری در تابع ایجاد میشود، نمیتواند بر هیچ بخشی از برنامه تأثیر بگذارد.
کنوانسیون های نامگذاری در Go
نامگذاری صحیح متغیرها برای نوشتن کدهای تمیز، خوانا و قابل نگهداری بسیار مهم است. Go چند قرارداد و قوانین خاص برای نامگذاری متغیرها دارد. در زیر برخی از آنها آورده شده است:
استفاده از نامهای توصیفی: از نامهایی استفاده کنید که به وضوح هدف یا محتوای متغیر را توصیف کنند. به عنوان مثال، به جای استفاده از نامهای مبهم مانند x یا y، از نامهایی مانند age
، totalPrice
، یا userName
استفاده کنید که به وضوح نشاندهنده چیزی است که متغیر نشان میدهد.
استفاده از CamelCase برای نامهای چند کلمهای: در Go، استفاده از camelCase برای نامهای متغیری که از چندین کلمه تشکیل شدهاند، معمول است. کلمه اول کوچک است و حرف اول هر کلمه بعدی بزرگ می شود.
اجتناب از استفاده از زیرخط: برخلاف برخی از زبانهای دیگر، Go CamelCase را به استفاده از زیرخط برای جدا کردن کلمات در نام متغیرها ترجیح میدهد. به camelCase بچسبید تا به سبک اصطلاحی Go پایبند باشید.
استفاده از نام های کوتاه برای متغیرهای کوتاه مدت: برای متغیرهای کوتاه مدت، مانند شمارنده های حلقه یا شاخص ها، استفاده از نام های کوتاه مانند i، j یا k قابل قبول است.
Constants in Go چیست؟
ثابت ها مقادیر تغییرناپذیری هستند که در زمان کامپایل تعریف شده اند و در طول اجرای برنامه قابل تغییر نیستند. آنها برای تعریف مقادیری مفید هستند که از قبل شناخته شده اند و ثابت خواهند ماند.
تصور کنید در حال ساخت یک فروشگاه آنلاین هستید که در آن هزینه استاندارد حمل و نقل همیشه 10 دلار است. میتوانید آن را بهعنوان یک ثابت اعلام کنید، پس میتوانید هر زمان که هزینههای حمل و نقل اعمال شود، در طول برنامه خود از آن استفاده کنید. اگر نرخ حمل و نقل تغییر کند، فقط باید مقدار را در یک مکان به روز کنید.
چگونه ثابت ها را در Go اعلام کنیم
شما می توانید ثابت ها را با استفاده از کلمه کلیدی const
و به دنبال آن نام، نوع (در صورتی که مقدار دلالت بر نوع داشته باشد) و مقدار ثابت را اعلام کنید. در اینجا به این صورت است:
package main import "fmt" func main () { const pi float64 = 3.14159 const greeting string = "Hello, World!" fmt.Println( "Pi:" , pi) fmt.Println( "Greeting:" , greeting) }
اگر بعد از اعلام شدن سعی کنید یک ثابت را تغییر دهید، یک خطای زمان کامپایل دریافت خواهید کرد.
انواع ثابت ها در Go
ثابت ها را می توان به صورت تایپ شده یا تایپ نشده طبقه بندی کرد. هر دو نوع ثابت به یک هدف عمل می کنند. آنها مقادیر ثابت و تغییرناپذیر را در سراسر برنامه ارائه می دهند. با این حال، آنها در نحوه مدیریت Go با انواع آنها و انعطاف پذیری آنها در هنگام استفاده متفاوت هستند.
به ثابت های تایپ نشده یک نوع اختصاص داده نمی شود مگر اینکه در زمینه ای که نیاز به یک نوع دارد استفاده شوند. وقتی یک ثابت بدون تایپ را اعلام می کنید، Go نوع را در نقطه ای که از ثابت استفاده می شود استنتاج می کند. این امر ثابتهای تایپ نشده را انعطافپذیرتر میکند، زیرا میتوانند در تعدادی از تنظیمات بدون نیاز به تبدیل نوع استفاده شوند.
package main import "fmt" const gravity = 9.81 func main () { var height int = 10 var acceleration float64 = gravity * float64 (height) fmt.Println( "Acceleration:" , acceleration) }
در اینجا، gravity
ثابت نامشخص است. این بدان معنی است که Go می تواند نوع آن را بر اساس نحوه استفاده از آن استنباط کند. هنگامی که gravity
در یک محاسبه با float64
استفاده می شود، Go به طور خودکار آن را به عنوان یک float64
در نظر می گیرد.
بر خلاف ثابت های تایپ نشده، ثابت های تایپ شده دارای یک نوع صریحا اعلام شده هستند. این بدان معنی است که آنها فقط می توانند در زمینه هایی استفاده شوند که با آن نوع مطابقت دارند یا می توانند به یک نوع سازگار تبدیل شوند. ثابتهای تایپشده سختگیرانهتر هستند و اطمینان میدهند که مقدار همیشه بهعنوان نوع خاصی که با آن اعلام شده در نظر گرفته میشود.
package main import "fmt" const speedOfLight int = 299792458 func main () { var distance int = speedOfLight * 2 fmt.Println( "Distance:" , distance) }
در اینجا speedOfLight
ثابت تایپ شده با نوع int
است.
فقط می تواند در عملیات با مقادیر int
دیگر استفاده شود یا به طور صریح به نوع دیگری تبدیل شود.
این یک Wrap است
در این مقاله نگاهی انداختیم به اینکه متغیرها و ثابت ها چیست و چگونه آنها را در Go اعلام کنیم.
متغیرها و ثابت ها ابزارهای حیاتی در برنامه نویسی هستند. آنها به توسعه دهندگان اجازه می دهند تا داده ها را به طور موثر مدیریت و دستکاری کنند. وقتی نحوه استفاده از آنها را فهمیدید، می توانید کیفیت کد خود را بهبود ببخشید.
ارسال نظر