یک string در Go دنبالهای تغییرناپذیر از بایتها است که لزوماً نباید نمایندهی کاراکترها باشد.
یک «لیترال رشته» بین دو نقلقول دوتایی تعریف میشود:
const name = "Jane"
رشتهها را میتوان با عملگر + به هم الحاق کرد:
"Jane" + " " + "Austen"
// => "Jane Austen"
بعضی کاراکترهای خاص باید با یک بکاسلش در ابتدا escape شوند، مثل \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"
همانطور که قبلاً اشاره شد، بعضی کاراکترهای خاص باید با یک بکاسلش در ابتدا escape شوند. در ادامه فهرست کاملتری از این کاراکترهای خاص آمده است:
| مقدار | توضیح |
|---|---|
\a |
هشدار یا زنگ |
\b |
بکاسپیس |
\\ |
بکاسلش |
\t |
تب افقی |
\n |
تغذیهی خط یا خط جدید |
\f |
تغذیهی فرم |
\r |
بازگشت به ابتدای خط |
\v |
تب عمودی |
\' |
نقلقول تک |
\" |
نقلقول دوتایی |
fmt.Println("Joe\nWilliam\nJack\nAverell")
// Output:
// Joe
// William
// Jack
// Averell
«لیترالهای رشتهی خام» بهجای کوتیشن دوتایی از بکتیک (`) به عنوان جداکننده استفاده میکنند و همهی کاراکترهای داخل آنها بهصورت تحتاللفظی تفسیر میشوند، یعنی نیازی به escape کردن کاراکترها یا خطوط جدید نیست.
این نمونهای از یک رشتهی چندخطی است:
const daltons = `Joe
William
Jack
Averell`
این رشته چند خط دارد.
بهطور دقیقتر، ۳ تا \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'