في Go، نمثل السلاسل كسلسلة من السلاسل المحاطة بعلامات اقتباس مزدوجة مثل 'Hello, World'.
السلاسل غير قابلة للتغيير عندما يتعلق الأمر بـ Go. ومن ثم، بمجرد تحديد سلسلة، لا يمكننا تغيير محتوياتها مباشرة. لتغيير المحتوى، تحتاج إلى إنشاء مثيل جديد لسلسلة ذات محتوى معدل.
شيء واحد ستلاحظه في Go هو أن تنفيذ عمليات السلسلة مثل تسلسل السلسلة يمكن أن يؤدي إلى مشكلات في الأداء. وذلك لأننا نقوم بإنشاء سلسلة جديدة في كل مرة، الأمر الذي قد يكون غير فعال للغاية. لحسن الحظ، لدى Go نوع يسمى 'strings.Builder' يمكنه المساعدة في هذا الصدد.
في هذا البرنامج التعليمي، سوف نستكشف خصوصيات وعموميات هذا النوع ونتعلم كل شيء عنه.
كيف تعمل السلاسل في Go
قبل أن ننتقل إلى منشئ السلسلة في Go، دعونا نبدأ بفهم كيفية عمل السلاسل في Go.
كما ذكرنا، السلاسل غير قابلة للتغيير. وبالتالي، نقوم بإنشاء مثيل جديد للسلسلة أثناء مهام مثل التسلسل.
str1 := 'مرحبًا، '
str2 := 'عالم!'
النتيجة := str1 + str2
في هذه الحالة، تقوم العملية المحددة بإنشاء سلسلة جديدة لتخزين النتيجة 'Hello, World!' خيط.
سلاسل جولانج.Builder
يعد النوع 'strings.Builder' في Go جزءًا من حزمة 'strings' ودوره هو توفير طريقة أفضل وأكثر كفاءة لبناء السلاسل ومعالجتها دون إنشاء نسخ.
يأتي النوع 'Builder' مزودًا بالعديد من الطرق لمعالجة السلاسل مثل إلحاق السلاسل وإدراجها وتعديلها والمزيد.
يستخدم مخزنًا مؤقتًا لتخزين النتائج الوسيطة مما يجعله أكثر كفاءة عندما نحتاج إلى إنشاء سلاسل كبيرة أو إجراء العديد من عمليات السلسلة.
منشئ السلاسل (أساسي)
دعونا نبدأ بالأساسيات ونناقش كيفية استخدام النوع 'Builder'.
لكي نتمكن من استخدام 'strings.Builder'، نحتاج إلى إنشاء مثيل باستخدام وظيفة 'NewBuilder'. مثال على النحو التالي:
الحزمة الرئيسيةيستورد (
'إف إم تي'
'سلاسل'
)
func الرئيسي ( ) {
var builder strings.Builder
}
يمكننا أيضًا إنشاء مُنشئ بمحتوى سلسلة أولية كما يلي:
builder := strings.NewBuilder ( 'أهلاً' )عمليات بناء السلسلة
دعونا نناقش الطرق والعمليات التي يمكننا تنفيذها على النوع 'Builder'.
إلحاق السلاسل
لإلحاق السلاسل بمثيل من النوع 'Builder'، يمكننا استخدام طريقة WriteString() كما هو موضح في المثال التالي:
يستورد (
'إف إم تي'
'سلاسل'
)
func الرئيسي ( ) {
var builder strings.Builder
builder.WriteString ( 'https://' )
builder.WriteString ( 'linuxhint.com' )
url := builder.String ( )
fmt.Println ( عنوان URL )
}
في المثال المعطى، نبدأ بإنشاء منشئ سلسلة فارغة. ثم نقوم بإلحاق سلسلتين به باستخدام وظيفة 'WriteString'.
أخيرًا، نقوم باسترداد السلسلة المتسلسلة باستخدام طريقة String() وطباعتها على وحدة التحكم كما يلي:
https: // linuxhint.com تطهير البناء
يمكننا مسح محتويات 'strings.Builder' وإعادة استخدامه من خلال استدعاء طريقة 'Reset' كما هو موضح في المثال التالي:
يستورد (
'إف إم تي'
'سلاسل'
)
func الرئيسي ( ) {
var builder strings.Builder
builder.WriteString ( 'https://' )
fmt.Println ( builder.String ( ) )
builder.Reset ( )
builder.WriteString ( 'linuxhint.com' )
url := builder.String ( )
fmt.Println ( عنوان URL )
}
في المثال المذكور، نبدأ بإنشاء منشئ جديد ونلحق https:// string into it.
نستخدم بعد ذلك وظيفة Reset() لمسح المنشئ وجعله جاهزًا لإعادة الاستخدام. نقوم بذلك عن طريق كتابة سلسلة جديدة فيه وهي 'linuxhint.com'.
الناتج الناتج هو كما يلي:
https: //linuxhint.com
باستخدام شرائح البايت
في Go، يتم تمثيل السلاسل كشرائح بايت أسفل الغطاء. وهذا ما يجعل السلاسل العادية بمثابة طريقة عرض للقراءة فقط لسلسلة من البايتات.
لذلك لا شك أنك سوف تصادف حالات تحتاج فيها إلى إلحاق شرائح البايتات بمنشئ سلسلة.
ولهذا يمكننا استخدام طريقة 'الكتابة' على النحو التالي:
الحزمة الرئيسيةيستورد (
'إف إم تي'
'سلاسل'
)
func الرئيسي ( ) {
var builder strings.Builder
بايت := [ ] بايت ( 'https://linuxhint.com' )
builder.Write ( بايت )
url := builder.String ( )
fmt.Println ( عنوان URL )
}
ها أنت ذا!
لماذا تحتاج إلى منشئ سلسلة؟
قد تتساءل، لماذا أحتاج إلى منشئ سلسلة؟ الجواب القصير هو أنك لا تفعل ذلك. تعد السلسلة العادية في Go أكثر من كافية في مجموعة واسعة من حالات الاستخدام.
ومع ذلك، إحدى المزايا الرئيسية لاستخدام Builder هي المرونة في إنشاء سلسلة لك مع ميزة إضافية تتمثل في الأداء غير موجودة في السلسلة العادية.
نظرًا لأنه يتجنب عمليات تخصيص الذاكرة غير الضرورية والنسخ عند إنشاء السلاسل، فإنه يجعلها أكثر كفاءة من تسلسل سلسلة بسيط باستخدام عامل التشغيل '+'.
خاتمة
في هذا البرنامج التعليمي، تعلمنا معظم الأشياء التي نحتاج إلى معرفتها حول نوع 'Builder' في Go. لسوء الحظ، ليس من الممكن مناقشة كل ميزة من نوع 'المنشئ' في نطاق هذا البرنامج التعليمي. ومن ثم، نوصيك بمراجعة الوثائق للحصول على لمسة إضافية من المعلومات حول نوع 'المنشئ'.