توفر 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.FormatInt
(و strconv.FormatUint
) توفر تحكمًا في الأساس وتتعامل مع أحجام مختلفة من الأعداد الصحيحة؛ و fmt.Sprint
و fmt.Sprintf
توفران مرونة أكبر ولكن قد تكون أقل كفاءة لتحويلات الأعداد الصحيحة الأساسية إلى سلاسل نصية. اختر الطريقة التي تتوافق بشكل مثالي مع احتياجاتك وأسلوبك في البرمجة.