Go Programming

تحويل الأعداد الصحيحة إلى سلاسل نصية بكفاءة في جو (Go)

Spread the love

توفر Go العديد من الطرق الفعالة لتحويل الأعداد الصحيحة إلى تمثيلها النصي. هذه مهمة شائعة عند عرض الأرقام، أو تسجيل البيانات، أو إنشاء سلاسل نصية لأغراض متنوعة. تستعرض هذه المقالة ثلاثة أساليب رئيسية: استخدام دالة strconv.Itoa، ودالة strconv.FormatInt، وطريقة fmt.Sprint.

جدول المحتويات

دالة strconv.Itoa

لتحويل الأعداد الصحيحة الموقعة (int) إلى سلاسل نصية، توفر strconv.Itoa أبسط الحلول وأكثرها كفاءة. تأخذ مباشرة عددًا صحيحًا وتعيد ما يعادله من سلسلة نصية. على الرغم من موثوقيتها العالية، إلا أن خطأً محتملاً (على الرغم من ندرته) سيؤدي إلى حدوث حالة من الهلع (panic).


package main

import (
	"fmt"
	"strconv"
)

func main() {
	num := 12345
	str := strconv.Itoa(num)
	fmt.Println(str) // المخرجات: 12345

	negativeNum := -9876
	negativeStr := strconv.Itoa(negativeNum)
	fmt.Println(negativeStr) // المخرجات: -9876
}

إن إيجازها و سرعتها يجعلها مثالية للتحويلات البسيطة للأعداد الصحيحة الموقعة.

دالة strconv.FormatInt

توفر strconv.FormatInt مرونة أكبر، حيث تدعم أحجامًا مختلفة من الأعداد الصحيحة (int64، int32، إلخ) وتتيح لك تحديد الأساس (الأس) لسلسلة المخرجات. هذه الميزة مفيدة بشكل خاص لتمثيل الأعداد بصيغ ثنائية، أو ثمانية، أو عشرية ستينية.


package main

import (
	"fmt"
	"strconv"
)

func main() {
	num := int64(12345)
	str := strconv.FormatInt(num, 10) // أساس 10 (عشري)
	fmt.Println(str) // المخرجات: 12345

	hexStr := strconv.FormatInt(num, 16) // أساس 16 (عشري ستيني)
	fmt.Println(hexStr) // المخرجات: 3039

	binStr := strconv.FormatInt(num, 2) // أساس 2 (ثنائي)
	fmt.Println(binStr) // المخرجات: 11000000111001

    unsignedNum := uint64(12345)
    unsignedStr := strconv.FormatUint(unsignedNum, 10)
    fmt.Println(unsignedStr) //المخرجات: 12345
}

الحجة الثانية تحدد الأساس (10 للعشري، 16 للعشري الستيني، 2 للثنائي، 8 للثماني). بالنسبة للأعداد الصحيحة غير الموقعة، استخدم strconv.FormatUint.

طريقة fmt.Sprint

توفر دالة fmt.Sprint حلاً عامًا الغرض لتحويل أنواع بيانات مختلفة، بما في ذلك الأعداد الصحيحة، إلى سلاسل نصية. على الرغم من أنها أقل كفاءة من strconv.Itoa لتحويلات الأعداد الصحيحة البسيطة، إلا أن تنوعها يبرز عند تنسيق قيم متعددة في وقت واحد.


package main

import (
	"fmt"
)

func main() {
	num := 12345
	str := fmt.Sprint(num)
	fmt.Println(str) // المخرجات: 12345

	str2 := fmt.Sprintf("العدد هو: %d", num) //تحكم أكبر في التنسيق
	fmt.Println(str2) // المخرجات: العدد هو: 12345

    multipleValues := fmt.Sprint("القيمة1: ", 10, ", القيمة2: ", 20)
    fmt.Println(multipleValues) // المخرجات: القيمة1: 10, القيمة2: 20
}

fmt.Sprint مفيدة بشكل خاص لدمج الأعداد الصحيحة ضمن سلاسل نصية أكبر. fmt.Sprintf يوفر تحكمًا أدق في التنسيق باستخدام مواصفات التنسيق (مثل %d للأعداد الصحيحة العشرية).

باختصار، strconv.Itoa هي الأفضل للتحويلات البسيطة للأعداد الصحيحة الموقعة؛ strconv.FormatIntstrconv.FormatUint) توفر تحكمًا في الأساس وتتعامل مع أحجام مختلفة من الأعداد الصحيحة؛ و fmt.Sprint و fmt.Sprintf توفران مرونة أكبر ولكن قد تكون أقل كفاءة لتحويلات الأعداد الصحيحة الأساسية إلى سلاسل نصية. اختر الطريقة التي تتوافق بشكل مثالي مع احتياجاتك وأسلوبك في البرمجة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *