string في Go تمثّل تسلسلًا من البايتات غير قابل للتغيير، وهذه البايتات لا يلزم بالضرورة أن تمثّل أحرفًا.
تُعرَّف السلسلة النصية الحرفية بين علامتي اقتباس مزدوجتين:
const name = "Jane"
يمكن دمج السلاسل النصية باستخدام العامل +:
"Jane" + " " + "Austen"
// => "Jane Austen"
تحتاج بعض الأحرف الخاصة إلى شرطة مائلة عكسية قبلها، مثل \t لعلامة الجدولة و\n لسطر جديد داخل السلسلة النصية.
"How is the weather today?\nIt's sunny"
// =>
// How is the weather today?
// It's sunny
تحتوي حزمة strings على العديد من الدوال المفيدة للتعامل مع السلاسل النصية.
لمزيد من المعلومات عن دوال السلاسل النصية، اطّلع على توثيق حزمة strings.
إليك بعض الأمثلة:
import "strings"
// strings.ToLower returns the string given as argument with all its characters lowercased
strings.ToLower("MaKEmeLoweRCase")
// => "makemelowercase"
// strings.Repeat returns a string with a substring given as argument repeated many times
strings.Repeat("Go", 3)
// => "GoGoGo"
كما ذكرنا سابقًا، تحتاج بعض الأحرف الخاصة إلى شرطة مائلة عكسية قبلها. فيما يلي قائمة أكثر تفصيلًا بهذه الأحرف الخاصة:
| القيمة | الوصف |
|---|---|
\a |
تنبيه أو جرس |
\b |
مسافة للخلف |
\\ |
شرطة مائلة عكسية |
\t |
جدولة أفقية |
\n |
تغذية سطر أو سطر جديد |
\f |
تغذية صفحة |
\r |
إرجاع المؤشر |
\v |
جدولة رأسية |
\' |
علامة اقتباس أحادية |
\" |
علامة اقتباس مزدوجة |
fmt.Println("Joe\nWilliam\nJack\nAverell")
// Output:
// Joe
// William
// Jack
// Averell
تستخدم السلاسل النصية الحرفية الخام علامة الاقتباس الخلفية (\) كفاصل بدلًا من علامتي الاقتباس المزدوجتين، وتُفسَّر جميع الأحرف داخلها تفسيرًا حرفيًا، ما يعني أنه لا حاجة للهروب من الأحرف أو الأسطر الجديدة.
هذا مثال على سلسلة نصية متعددة الأسطر:
const daltons = `Joe
William
Jack
Averell`
تحتوي هذه السلسلة النصية على عدة أسطر.
وبشكل أكثر تحديدًا، تحتوي على 3 رموز \n.
لكن لأننا نستخدم سلسلة نصية حرفية خام، لا نحتاج إلى كتابة \n صراحةً داخل السلسلة النصية.
ستُفسَّر الأسطر الجديدة تفسيرًا حرفيًا.
إليك بعض الأمثلة الأخرى التي تقارن بين السلاسل النصية الحرفية الخام والسلاسل النصية الحرفية العادية:
`abc`
// same as "abc"
"\"" // regular string literal with 1 character: a double quote
// same as `"` a raw string literal with 1 character: a double quote
`\n
` // raw string literal with 3 character: a backslash, an 'n', and a newline
// same as "\\n\n" a regular string literal with 3 characters: a backslash, an 'n', and a newline
"\t\n" // regular string literal with 2 characters: a tab and a newline
`\t\n`// raw string literal with 4 characters: two backslashes, a 't', and an 'n'