1. متغیرات اور مستقل
Golang میں، متغیرات اور مستقل دو بنیادی تصورات ہیں جو کسی پروگرام میں بہت اہم کردار ادا کرتے ہیں۔
-
متغیر ایک نام دار شناکت ہوتی ہے جو کسی پروگرام میں ڈیٹا کو ذخیرہ کرنے کے لیے استعمال ہوتی ہے۔ Golang میں،
var
کی کلیدی لفظ استعمال ہوتی ہے متغیرات کی تشریح کے لیے۔ -
مستقل ایک شناکت ہوتی ہے جس کی قیمت پروگرام میں تبدیل نہیں کی جا سکتی۔ Golang میں،
const
کی کلیدی لفظ مستقل کی تشریح کے لیے استعمال ہوتی ہے۔
2 Golang متغیرات کی تشریح اور آغاز
2.1 ایک متغیر کی تشریح اور اسائنمنٹ
Go زبان میں، var
کی کلیدی لفظ کو متغیر کی تشریح کرنے کے لیے var variable_name type
کی شکل میں استعمال کیا جاتا ہے۔ تشریح کے بعد، متغیر کو کوڈ کے متواتر مراحل میں ایک قیمت سپرد کی جا سکتی ہے، یا یہ سیدھے طور پر تشریح کے وقت ہی آغاز کر دیا جا سکتا ہے۔ مثال کے طور پر:
var age int // ایک مکمل متغیر age کی تشریح کریں
age = 25 // متغیر کو ایک قیمت سپرد کریں
var name string = "Alice" // متغیر name کی تشریح اور آغاز کریں
2.2 متعدد متغیرات کی تشریح
Go زبان متعدد متغیرات کی ایک ساتھ تشریح کو سہارت دیتا ہے، جو کہ کوڈ کو مختصر بنا سکتا ہے۔ عموماً بلک تشریح کو فکشن کے آغاز یا پیکیج سطح پر کی جاتی ہے۔ مثال کے طور پر:
var (
firstName, lastName string
age int
)
firstName = "John"
lastName = "Doe"
age = 30
اوپر دی گئی بلک تشریح میں، firstName
اور lastName
کو اشاریوں کے طور پر متعرف کیا گیا ہے، جبکہ age
ایک مکمل عدد ہے۔
2.3 قسم کی تشخیص اور مختصر متغیر کی تشریح
Go زبان میں، عموماً متغیر کی قسم کو صریح طور پر مقرر کرنا ضروری نہیں ہوتا۔ اگر کسی متغیر کی تشریح کے وقت ابتدائیت کا اظہار فراہم کیا جائے، تو Go متغیر کی قسم کی تشخیص کر سکتا ہے۔ اسے قسم کی تشخیص کہا جاتا ہے۔ :=
کا استعمال کر کے مختصر متغیر کی تشریح، قسم کی تشخص کے بنیاد پر تشریح اور آغاز کا بیان سہولت پیدا کر سکتا ہے۔ مثال کے طور پر:
city := "Islamabad" // مختصر متغیر کی تشریح اور آغاز کرنے کے لیے شہر
country := "Pakistan" // قسم کے تشخیص کے بنیاد پر ملک
یہ قبضہ گر چاہیے کہ مختصر متغیر کی تشریح فنکشن کے آندر ہی استعمال کی جا سکتی ہیں اور یہ کسی عمومی سپرد میں استعمال نہیں کی جا سکتیں۔
2.4 فنکشن کے باہر متغیر کی تشریح
فنکشن کے باہر تشریح کی گئی متغیرات کا پیکیج سطحی دائرہ کار ہوتا ہے۔ یہ متغیرات پورے پیکیج میں دکھائیں اور فہمانے کے لیے دستیاب ہوں گی۔ مثال کے طور پر:
var globalVar string = "میں گلوبل ہوں" // ایک گلوبل متغیر کی تشریح
func printGlobalVar() {
fmt.Println(globalVar) // فنکشن کے اندر گلوبل متغیر تک رسائی
}
گلوبل متغیرات پیکیج کے کسی بھی فنکشن میں مشترکہ ہو سکتی ہیں، لیکن ان کا استعمالآپ گھریلو مسائل کے نام کرنے اور غیر واضح حوالہ جات سے بچنے کے لیے ہونا چاہئے۔
نصیحت: یہاں بنیادی فنکشن کو سمجھنا کافی ہے، فنکشنز کی تفصیلی وضاحت بعد کے حصوں میں دی جائے گی۔
3. بنیادی ڈیٹا ٹائپس اور صفر قیمتیں
3.1 Golang میں بنیادی ڈیٹا ٹائپس
Go زبان میں، ہر قسم کا متغیر وضاحت کرتا ہے۔ یہاں کچھ عام بنیادی ڈیٹا ٹائپس ہیں:
-
int
،int8
،int16
،int32
،int64
: مختلف حدود کے عدد صحیح -
uint
،uint8
،uint16
،uint32
،uint64
: بے علامت عدد صحیح -
float32
،float64
: فلوٹنگ پوائنٹ نمبرز -
bool
: بولیئن قیمتیں (ٹھیک یا غلط) -
string
: ڈٹائیں
3.2 Zero Values کا تصور
Go زبان میں، متغیرات کو افادیت طور پر ان کی قسم کی صفر قیمت دی جاتی ہے۔ صفر قیمت وہ قابلیت ہے جو ایک متغیر کی تشریح نہیں کی گئی ہو تو اس کی پہلی افتراضی قیمت ہوتی ہے۔ یہ کچھ دوسری زبانوں میں عام نہیں ہے، لیکن Go میں، یہ یقینی بناتا ہے کہ تمام متغیرات کا ہمیشہ ایک درست ابتدائی قیمت ہوتی ہے۔ یہاں ہر بنیادی ڈیٹا ٹائپ کی صفر قیمتیں ہیں:
- مثبت عدد کی صفر قیمت
0
ہے - فلوٹنگ پوائنٹ نمبر کی صفر قیمت
0.0
ہے - بولین کی صفر قیمت
false
ہے - ڈٹائیں کی صفر قیمت خالی ڈٹائیں
""
ہے
مثال کے طور پر:
var i int // صفر قیمت 0 ہے
var f float64 // صفر قیمت 0.0 ہے
var b bool // صفر قیمت false ہے
var s string // صفر قیمت "" ہے
صفر قیمتیں کے تصور کو سمجھنا بہت اہم ہے، کیونکہ یہ ڈویلپرز کو متغیر کی تعمیر کا رویہ سمجھنے اور نل پوائنٹر یا غیر تعین پذیر خامیوں سے بچانے میں مدد فراہم کرتا ہے۔
4. متغیرات کے دائرہ کار کا تصور
4.1 مقامی متغیرات
مقامی متغیرات وہ متغیرات ہوتے ہیں جو کسی فنکشن میں تعین کیے جاتے ہیں، اور صرف اس فنکشن کے اندر ہی دستیاب ہوتے ہیں۔ فنکشن کے پیرامیٹر بھی مقامی متغیرات ہوتے ہیں۔ ان مقامی متغیرات کا وجود فنکشن کے بنتے ہی سے شروع ہو جاتا ہے، اور فنکشن کی اجراء مکمل ہونے تک وہ غائب ہو جاتے ہیں۔ ہر بار جب بھی فنکشن کو بلایا جاتا ہے، مقامی متغیرات دوبارہ تخلیق ہوتے ہیں۔
func localVariableExample() {
var localVariable int = 10 // یہ ایک مقامی متغیر ہے
fmt.Println(localVariable)
}
func main() {
localVariableExample() // اخراج: 10
// fmt.Println(localVariable) // یہ کمپائل خطا واقع ہوگا کیونکہ localVariable یہاں دستیاب نہیں ہے
}
اوپر دیئے گئے مثال میں localVariable
صرف localVariableExample
فنکشن کے اندر ہی دستیاب ہے۔
4.2 عام متغیرات
عام متغیرات وہ متغیرات ہوتے ہیں جو فنکشن کے باہر تعین کیے جاتے ہیں، اور انہیں ایک ہی پیکیج کے کسی بھی فائل میں دستیاب کیا جا سکتا ہے۔ اگر آپ عام متغیرات کو دیگر پیکیجوں میں استعمال کرنا چاہتے ہیں تو متغیر کا نام Go کی دسترسی کنٹرول کے قواعد کے مطابق ایک بڑے حرف سے شروع ہونا چاہئے۔
package main
import "fmt"
var globalVariable int = 20 // یہ ایک عام متغیر ہے
func main() {
fmt.Println(globalVariable) // اخراج: 20
changeGlobal()
fmt.Println(globalVariable) // اخراج: 30
}
func changeGlobal() {
globalVariable = 30 // عام متغیر کی قیمت تبدیل کریں
}
اس مثال میں globalVariable
کو دیئے گئے کڈ میں main
فنکشن اور changeGlobal
فنکشن میں دیکھا جا سکتا ہے۔
5 ثابت کرنے اور استعمال کرنے کی دعوت
5.1 const
کی بات
ہم const
کی بات استعمال کرتے ہیں ثوابت کو تعین کرنے کے لئے۔ ثوابت وہ قیمتیں ہوتی ہیں جو ترتیب دئیے گئے اور ایک بار تعین ہو جانے کے بعد نہیں بدلی جا سکتی ہیں۔ ثوابت کی قسم ہو سکتی ہیں کوئی بھی بنیادی ڈیٹا ٹائپ مثلاً عدد صحیح، فلوٹنگ پوائنٹ نمبرز، بولین یا اسٹرنگ نمبرز۔
const Pi = 3.14 // ایک فلوٹ ثابت کا اعلان کریں
const StrConst string = "ہیلو، ورلڈ!" // ایک اسٹرنگ ثابت کا اعلان کریں
func main() {
fmt.Println(Pi)
fmt.Println(StrConst)
}
5.2 شماریاتی ثوابت
Go زبان کا کوئی خاص شماریاتی نمونہ نہیں ہے، لیکن آپ "iota" کلمہ استعمال کرکے شماریاتی نمونے حاصل کر سکتے ہیں۔ const
بلاک کے اندر، ہر اضافی ثابت کا اعلان iota
کی قیمت کو 1 سے بڑھا دیتا ہے۔
const (
Sunday = iota // 0
Monday // 1
Tuesday // 2
Wednesday // 3
Thursday // 4
Friday // 5
Saturday // 6
)
func main() {
fmt.Println(Sunday) // اخراج: 0
fmt.Println(Saturday) // اخراج: 6
}
اوپر دیئے گئے کوڈ میں ہفتے کے دنوں کے لئے شماریاتی نمونے کا اعلان کیا گیا ہے، جہاں iota
کی ابتدائیت const
بلاک کے اندر صفر پر ہوتی ہے اور ہر متوالے اعلان میں ایک اضافی ہو جاتی ہے۔
5.3 ثوابت کا دائرہ
ثوابت کا دائرہ متغیرات کی حد کی طرح ہے۔ اگر کوئی ثابت کسی فنکشن کے اندر تعین کیا گیا ہو تو اس کا دائرہ صرف اس فنکشن تک محدود ہوتا ہے۔ اگر کوئی ثابت فنکشن کے باہر (عام طور پر) تعین کیا گیا ہو تو اس کا دائرہ پورے پیکیج کا ہوتا ہے، اور اگر پہلا حرف بڑا ہو تو دیگر پیکیجوں میں بھی اس تک رسائی حاصل کی جا سکتی ہے۔
ثوابت کے دائرہ کو منظم کرنا عمومی دائرہ کار کو کم کرتا ہے اور پروگرام کی نگرانی اور قابل پڑھائی میں بہتری لاتا ہے۔
const GlobalConst = "یہ ایک عام ثابت ہے"
func main() {
const LocalConst = "یہ ایک مقامی ثابت ہے"
fmt.Println(GlobalConst) // یہ درست ہے
fmt.Println(LocalConst) // یہ درست ہے
}
func anotherFunction() {
// fmt.Println(LocalConst) // یہ کمپائل خطا واقع ہوگا: LocalConst اس فنکشن میں دستیاب نہیں ہے
fmt.Println(GlobalConst) // یہ درست ہے
}
اس مثال میں، LocalConst
صرف main
فنکشن کے اندر دستیاب ہے، جبکہ GlobalConst
پورے پیکیج کے اندر دستیاب ہے۔