گولانگ کاسٹنگ کی مثالیں۔

Gwlang Kas Ng Ky Mthaly



کسی قدر کے ڈیٹا کی قسم کو ایک قسم سے دوسری قسم میں تبدیل کرنے کے عمل کو ٹائپ کاسٹنگ کے نام سے جانا جاتا ہے، جسے بعض اوقات ٹائپ کنورژن بھی کہا جاتا ہے۔ گو میں واضح قسم کے تبادلوں کا استعمال کرتے ہوئے ٹائپ کاسٹنگ مکمل کی جاتی ہے۔ گو مضبوط ٹائپنگ کو سپورٹ کرتا ہے۔ اس طرح، اقسام کے درمیان تبدیل کرتے وقت، ہمیں اپنے مقصد کو واضح طور پر بتانا چاہیے۔ یہ قسم کی حفاظت کو فروغ دیتا ہے اور ٹائپنگ کی غلطیوں کے امکان کو کم کرتا ہے۔ اس تحریر میں، ہم Go میں مختلف اقسام کے ساتھ کاسٹنگ کے بارے میں دریافت کریں گے۔

مثال 1: گولانگ بنیادی قسم کاسٹنگ

آئیے گو میں براہ راست اور بنیادی کاسٹنگ کی مثال سے شروع کریں کیونکہ ہمیں کہیں بھی، متغیر کی قسم میں ترمیم کرنے کے لیے ٹائپ کاسٹنگ کی ضرورت ہوتی ہے۔

پیکج مرکزی
درآمد (
'fmt'
)
func مرکزی () {
تھا ایکس int = 31
اور := float64 ( ایکس )
ایف ایم ٹی . پرنٹ ایل این ( اور )
}

یہاں، ہم 'int' قسم کے 'x' نامی متغیر کا اعلان کرکے مین فنکشن کے ساتھ شروعات کرتے ہیں اور اسے 31 کی ویلیو کے ساتھ تفویض کرتے ہیں۔ پھر، شارٹ ہینڈ اسائنمنٹ آپریٹر ':=' کا استعمال کرتے ہوئے متغیر 'y' کا اعلان کیا جاتا ہے۔ 'y' کی قسم خود بخود دائیں طرف کے اظہار سے طے ہوتی ہے جو 'x' کو 'float64' میں تبدیل کرنے کا نتیجہ ہے۔ لہذا، اس پروگرام میں، 'x' کی قدر کو 'float64' میں تبدیل کیا جاتا ہے اور 'y' کو تفویض کیا جاتا ہے۔







Go میں بنیادی کاسٹنگ سے حاصل کیے گئے نتائج درج ذیل دکھائے گئے ہیں:





مثال 2: گولانگ امپلیسیٹ ٹائپ کاسٹنگ

مختلف اقسام کے درمیان مضمر قسم کاسٹنگ کی اجازت نہیں ہے۔ Go مضبوط ٹائپنگ کو نافذ کرتا ہے جس کا مطلب ہے کہ ہم واضح تبدیلی کے بغیر ایک قسم کی قدر کو دوسری قسم کے طور پر براہ راست تفویض یا استعمال نہیں کر سکتے۔ درج ذیل میں، ہم مضمر کاسٹنگ انجام دینے کی کوشش کرتے ہیں جو Go کی طرف سے استثناء پیدا کرتا ہے:





پیکج مرکزی
درآمد 'fmt'
func مرکزی () {
تھا عدد int = 9 . 08
ایف ایم ٹی . پرنٹ ایف ( 'انٹیجر %g ہے' , عدد )
}

یہ وہ کوڈ ہے جو مین () فنکشن سے شروع ہوتا ہے جہاں ایک 'انٹیجر' متغیر کا اعلان 'int' قسم کے ساتھ کیا جاتا ہے۔ 'انٹیجر' متغیر کو تفویض کردہ قدر 9.08 ہے جو ایک فلوٹنگ پوائنٹ نمبر ہے۔ چونکہ ہم ایک فلوٹنگ پوائنٹ ویلیو کو براہ راست ایک عدد متغیر کو تفویض کرنے کی کوشش کر رہے ہیں، اس کے نتیجے میں ایک قسم کی مماثلت کی خرابی ہوتی ہے۔ پھر، ہم '%g' فارمیٹ اسپیفائر کا استعمال کرتے ہوئے 'انٹیجر' متغیر کی قدر پرنٹ کرنے کے لیے 'fmt' پیکیج سے 'printf' فنکشن استعمال کرتے ہیں۔

جیسا کہ توقع کی جاتی ہے، گولانگ میں مضمر قسم کاسٹنگ قابل قبول نہیں ہے۔ پچھلی مضمر قسم کاسٹنگ درج ذیل خرابی پیدا کرتی ہے:



مثال 3: گولانگ واضح قسم کاسٹنگ

واضح قسم کی تبدیلی ہمیں کسی ارادے کو واضح طور پر بیان کرتے ہوئے ہم آہنگ اقسام کے درمیان اقدار کو محفوظ طریقے سے تبدیل کرنے کے قابل بناتی ہے۔ یہ یقینی بناتا ہے کہ ہم قسم کی تبدیلی سے آگاہ ہیں اور حادثاتی قسم کی غلطیوں کو روکنے میں مدد کرتا ہے۔ مندرجہ ذیل واضح کاسٹنگ پر غور کریں:

پیکج مرکزی
درآمد 'fmt'

func مرکزی () {
تھا floatVal float32 = 6 . 75
تھا intVal int = int ( floatVal )
ایف ایم ٹی . پرنٹ ایف ( 'فلوٹ ویلیو %g ہے۔ \n ' , floatVal )
ایف ایم ٹی . پرنٹ ایف ( 'انٹیجر ویلیو %d ہے' , intVal )
}

یہاں، ایک 'floatVal' متغیر 'float32' قسم کے ساتھ بنایا گیا ہے، اور اسے '6.75' ویلیو تفویض کیا گیا ہے۔ پھر، ایک 'intVal' متغیر کا اعلان 'int' قسم کے ساتھ کیا جاتا ہے۔ floatVal کی قدر intVal کو تفویض کرنے کے لیے، قسم کی تبدیلی کا استعمال کیا جاتا ہے۔ floatVal کو انٹیجر ویلیو میں تبدیل کرنے کے لیے، 'int' فنکشن floatVal کے ساتھ بطور ان پٹ استعمال ہوتا ہے۔ اس کے بعد، 'fmt.Printf('Float Value is %g\n', floatVal)' %g فارمیٹ اسپیفائر کا استعمال کرتے ہوئے floatVal کی قدر پرنٹ کرتا ہے جو فلوٹنگ پوائنٹ ویلیوز پرنٹ کرنے کے لیے موزوں ہے۔ جبکہ 'fmt.Printf('انٹیجر ویلیو %d' ہے، intVal)' کوڈ لائن %d فارمیٹ سپیفائر کا استعمال کرتے ہوئے intVal کی قدر پرنٹ کرتی ہے جو کہ عددی اقدار کو پرنٹ کرنے کے لیے موزوں ہے۔

درج ذیل آؤٹ پٹ اسے کاسٹ کرنے کے بعد floatVal اور intVal دونوں کے لیے قدریں تیار کرتا ہے۔

مثال 4: گولانگ ٹائپ کاسٹنگ اوسط حاصل کرنے کے لیے

اگلا، ہم دی گئی اقدار سے اوسط نمبر حاصل کرنے کے لیے کاسٹنگ کرتے ہیں۔ آئیے اس سورس کوڈ کو دیکھیں جو درج ذیل میں فراہم کیا گیا ہے۔

پیکج مرکزی
درآمد 'fmt'
func مرکزی () {
تھا کل int = 900
تھا میرا نمبر int = بیس
تھا اوسط float32
اوسط = float32 ( کل ) / float32 ( میرا نمبر )
ایف ایم ٹی . پرنٹ ایف ( 'اوسط = %f ہے۔ \n ' , اوسط )
}

یہاں، ہم ابتدائی طور پر تین متغیرات کا اعلان کرتے ہیں۔ 'مجموعی' ایک عدد متغیر ہے جو 900 کی قدر کے ساتھ شروع کیا جاتا ہے۔ 'MyNumber' ایک عدد متغیر ہے جو 20 کی قدر کے ساتھ شروع کیا جاتا ہے۔ پھر شمار شدہ اوسط کو float32 'اوسط' متغیر میں محفوظ کیا جاتا ہے۔ اس کے بعد حساب لگانے کے لیے اوسط فارمولا دیا جاتا ہے۔ اس بات کو یقینی بنانے کے لیے کہ تقسیم کو فلوٹنگ پوائنٹ ڈویژن کے طور پر کیا گیا ہے، قسم کی تبدیلی کا استعمال کرتے ہوئے 'کل' اور 'MyNumber' کی قدروں کو float32 میں تبدیل کیا جاتا ہے۔ حساب شدہ اوسط 'اوسط' متغیر کو تفویض کیا جاتا ہے۔ آخر میں، '%f\n' فارمیٹ سٹرنگ جو 'printf' فنکشن میں استعمال ہوتی ہے یہ بتاتی ہے کہ فلوٹ ویلیو پرنٹ کی جانی چاہیے، اس کے بعد ایک نئی لائن کریکٹر۔

پچھلے کوڈ میں ٹائپ کاسٹ کرنے کے بعد اوسط کے طور پر نتیجہ حاصل کیا جاتا ہے:

مثال 5: گولانگ انٹ اور سٹرنگ ٹائپ کاسٹنگ

مزید برآں، Go Int اور String اقسام کے درمیان کاسٹنگ بھی پیش کرتا ہے۔ ہم اسے strconv پیکیج کے فنکشن کا استعمال کرتے ہوئے پورا کر سکتے ہیں۔

پیکج مرکزی
درآمد (
'fmt'
'strconv'
)
func مرکزی () {
تھا str تار = '1999'
میں ، _ := strconv . ٹریلر ( s )
ایف ایم ٹی . پرنٹ ایل این ( میں )
تھا عدد int = 1999
toStr := strconv . ڈوب گیا ( عدد )

ایف ایم ٹی . پرنٹ ایل این ( toStr )
}

یہ وہ کوڈ ہے جو دو متغیرات کے اعلان کے ساتھ شروع ہوتا ہے۔ 'str' ​​ایک سٹرنگ متغیر ہے جو '1999' کی قدر کے ساتھ شروع کیا جاتا ہے اور 'انٹیجر' ایک عدد متغیر ہے جو '1999' کی قدر کے ساتھ شروع کیا جاتا ہے۔ اس کے بعد، 'strconv.Atoi()' فنکشن 'str' ​​سٹرنگ کو انٹیجر ویلیو میں تبدیل کرنے کے لیے استعمال کیا جاتا ہے۔ 'v' کی واپسی قدر تبدیل شدہ عدد کی نمائندگی کرتی ہے، اور خالی '_' شناخت کنندہ کسی بھی ممکنہ غلطی کو نظر انداز کرنے کے لیے استعمال کیا جاتا ہے جو Atoi() کے ذریعے واپس کی جاتی ہے۔

اگلا، strconv.Itoa() فنکشن انٹیجر کو سٹرنگ ویلیو میں تبدیل کرنے کے لیے استعمال کیا جاتا ہے۔ لوٹی ہوئی قدر جو کہ 'toStr' ہے تبدیل شدہ سٹرنگ کی نمائندگی کرتی ہے۔

آؤٹ پٹ '1999' سٹرنگ سے ایک عدد میں اور واپس ایک سٹرنگ میں تبدیلی دکھاتا ہے جو '1999' کی اصل قدر پیدا کرتی ہے:

مثال 6: سٹرنگ اور بائٹس کے درمیان گولانگ ٹائپ کاسٹنگ

مزید یہ کہ گو میں کاسٹنگ سٹرنگ اور بائٹ کی اقسام میں بھی کی جا سکتی ہے۔ درج ذیل کوڈز سٹرنگز اور بائٹ سلائسز کے درمیان تبدیلی کو ظاہر کرتے ہیں:

پیکج مرکزی
درآمد (
'fmt'
)
func مرکزی () {
تھا mystr تار = 'ارے وہاں'
تھا b1 [ ] بائٹ = [ ] بائٹ ( myStr )
ایف ایم ٹی . پرنٹ ایل این ( b1 )
toString := تار ( b1 )
ایف ایم ٹی . پرنٹ ایل این ( toString )
}

یہاں، متغیرات کو سب سے پہلے 'myStr' اور 'b1' قرار دیا جاتا ہے جو کہ کچھ قدروں کے ساتھ شروع ہوتے ہیں۔ پھر، []byte(myStr) اظہار ٹائپ کنورژن کا استعمال کرتے ہوئے 'myStr' سٹرنگ کو بائٹ سلائس میں تبدیل کرتا ہے۔ یہ نتیجے میں بائٹ سلائس کو 'b1' متغیر کو تفویض کرتا ہے۔ اس کے بعد، 'string(b1)' ایکسپریشن ٹائپ کنورژن کا استعمال کرتے ہوئے بائٹ سلائس b1 کو واپس سٹرنگ میں تبدیل کرتا ہے۔ یہ نتیجے میں آنے والی سٹرنگ کو 'toString' متغیر کو تفویض کرتا ہے۔

آؤٹ پٹ مندرجہ ذیل میں 'Hey there' سٹرنگ اور اس کے متعلقہ بائٹ سلائس کی نمائندگی کے درمیان تبدیلی کو ظاہر کرتا ہے:

مثال 7: مربع جڑ حاصل کرنے کے لیے گولانگ ٹائپ کاسٹنگ

اب، ہم مربع جڑ کے نتائج تلاش کرنے کے لیے گو میں کاسٹنگ کرتے ہیں۔ کوڈ درج ذیل ہے:

پیکج مرکزی
درآمد (
'fmt'
'ریاضی'
)
func مرکزی () {
تھا n int = 177
تھا SqrtN float64
SqrtN = ریاضی . Sqrt ( float64 ( n ))
ایف ایم ٹی . پرنٹ ایف ( '%d کا مربع جڑ %.2f ہے۔ \n ' ، n ، SqrtN )
}

یہاں، 'n' متغیر کو int کے طور پر قرار دیا جاتا ہے اور '144' کی قدر تفویض کرتا ہے۔ 'SqrtN' متغیر کو float64 کے طور پر قرار دیا گیا ہے اور 'n' کے حسابی مربع جڑ کو ذخیرہ کرتا ہے۔ پھر، math.Sqrt() فنکشن کو 'n' کے مربع جڑ کا حساب لگانے کے لیے لگایا جاتا ہے۔ چونکہ math.Sqrt() کو float64 دلیل کی توقع ہے، اور float64(n) کا استعمال کرتے ہوئے 'n' کی قدر float64 میں تبدیل ہو جاتی ہے۔ اس کے بعد، '%d کا مربع جڑ %.2f\n' فارمیٹ سٹرنگ کالز 'printf' فنکشن میں ہوتا ہے جو ایک عددی قدر (%d) اور ایک فلوٹنگ پوائنٹ ویلیو (%.2f) بتاتا ہے۔ '%.2f' میں '.2' درست وضاحت کنندہ اس بات کو یقینی بناتا ہے کہ مربع جڑ دو اعشاریہ جگہوں کے ساتھ پرنٹ ہو۔

درج ذیل آؤٹ پٹ حاصل کیا گیا ہے جو دی گئی قدر کے مربع جڑ کی نشاندہی کرتا ہے:

نتیجہ

گو میں کاسٹنگ پر الگ الگ مثالوں کے ساتھ تبادلہ خیال کیا گیا ہے جو تمام قابل عمل ہیں۔ ذہن میں رکھیں کہ Go میں، ٹائپ کاسٹنگ واضح ہے جو مضبوط ٹائپنگ کو نافذ کرتی ہے اور کوڈ کی وضاحت اور بھروسے کو فروغ دیتی ہے۔