1.15 قالب بندی رشته‌ها

1.15 قالب بندی رشته‌ها

در زبان گو مانند سایر زبان‌ها یکسری عناوین برای قالب‌بندی رشته وجود دارد که برخی از این عناوین مشترک بین همه زبان‌ها هست و برخی مختص زبان گو.

1.15.1 قالب بندی با توابع Printf و Sprintf #

زمانیکه شما از تابع Printf یا Sprintf استفاده می‌کنید می‌توانید رشته خروجی را با استفاده از پارامترهای بعد از رشته قالب‌بندی کنید، و در نهایت بصورت یک رشته نمایش دهید.

1fmt.Printf("{{Verb}}", value1, value2, value3, ..., valueN)
1fmt.Sprintf("{{Verb}}", value1, value2, value3, ..., valueN)

توجه کنید هر دو تابع فوق خیلی کاربردی و پر استفاده هستند. این ۲ تابع کارکردشان مشترک است ولی خروجی متفاوتی دارند.

به عنوان مثال :

  • شما با استفاده از Printf می‌توانید یک رشته را قالب‌بندی کنید و در نهایت به عنوان خروجی چاپ کنید.
  • ولی با استفاده از Sprintf می‌توانید یک رشته را قالب‌بندی کنید و در نهایت به جای اینکه مقدار خروجی را چاپ کنید، اون رو داخل یک متغیر قرار بریزید. به مثال زیر توجه کنید:
1x := fmt.Sprintf("age %s is %d years", "Javad", 30)

1.15.1.1 قالب‌بندی یک slice #

Verbfmt.Printf("{{Verb}}", []int64{0, 1}) خروجیتوضیحات
%v[0 1]فرمت پیش‌فرض
%#v[]int64{0, 1}قالب‌بندی کد گو
%T[]int64تایپ مقدار
توجه کنید v% یکی از پرکاربرد‌ترین Verb‌ها در گولنگ است و مواقعی مورد استفاده قرار می‌گیرد که شما قصد دارید یک مقدار را داخل رشته بزارید، ولی از تایپ اون مقدار خبر ندارید.

1.15.1.2 قالب‌بندی اعداد صحیح #

Verbfmt.Printf("{{Verb}}", 15) خروجیتوضیحات
%d15عدد پایه ۱۰
%+d+15نمایش + در کنار عدد
%4d␣␣15۴ کارکتر با فاصله از راست
%-4d15␣␣۴ کارکتر با فاصله از چپ
%04d0015نمایش عدد با پیشوند صفر
%b1111عدد با پایه باینری
%o17عدد با پایه ۸ اکتال
%xfعدد با پایه ۱۶ هگز حروف کوچک
%XFعدد با پایه ۱۶ هگز حروف بزرگ
%#x0xfعدد با پایه ۱۶ هگز به همراه 0x

1.15.1.3 قالب‌بندی اعداد اعشاری #

Verbfmt.Printf("{{Verb}}", 123.456) خروجیتوضیحات
%e1.234560e+02نمایش بصورت نماد عملی
%f123.456000نقطه اعشاری، بدون نما. دقت پیش فرض 6 است
%.2f123.46عرض پیش فرض، دقت 2 رقم بعد از نقطه اعشار
%8.2f␣␣123.46عرض 8 کاراکتر، دقت 2 رقم بعد از نقطه اعشار. کاراکتر پیش‌فرض padding space است
%08.2f00123.46عرض 8 کاراکتر، دقت 2 رقم بعد از نقطه اعشار. لایه سمت چپ با نویسه مشخص شده (اینجا، 0)
%g123.456نما در صورت نیاز، فقط ارقام ضروری

1.15.1.4 قالب‌بندی کارکترها #

Verbfmt.Printf("{{Verb}}", 'A') خروجیتوضیحات
%cAکارکتر
%q'A'کارکتر به همراه تک کوتیشن
%UU+0041یونیکد
%#UU+0041 'A'یونیکد به همراه کارکتر

1.15.1.5 قالب‌بندی رشته (string) و slice بایت #

Verbfmt.Printf("{{Verb}}", "gophers") خروجیتوضیحات
%sgophersرشته ساده
%8s␣␣gophersبا ۸ پدینگ راست چین شده
%-8sgophers␣␣با ۸ پدینگ چپ چین شده
%q"gophers"رشته به همراه دابل کوتیشن
%x676f7068657273خروجی هگز مقدار
% x67 6f 70 68 65 72 73خروجی هگز مقدار با فاصله

1.15.1.6 قالب‌بندی بولین #

Verbfmt.Printf("{{Verb}}", true) خروجیتوضیحات
%ttrueنمایش مقدار بولین در رشته

1.15.1.6 قالب‌بندی اشاره‌گر (pointer) #

Verbfmt.Printf("{{Verb}}", new(int)) خروجیتوضیحات
%p0xc0000b2000نمایش آدرس حافظه با پایه ۱۶ به همراه 0x

1.15.2 مقادیر خاص در رشته #

همانطور که گفتیم زبان گو یکسری کارکترهای خاص دارد که باعث تغییراتی در خروجی رشته خواهد شد و این کارکترهای خاص بین همه زبان‌ها مشترک هستند. در ادامه لیست این کاراکتر‌ها را آورده‌ایم:

Verbتوضیحات
\aU+0007 هشدار یا زنگ
\bU+0008 بک اسپیس backspace
\\U+005c بک اسلش backslash
\tU+0009 تب بصورت افقی
\nU+000A خط جدید
\fU+000C حالت فرم
\rU+000D حالت برگشت
\vU+000b تب بصورت عمودی
%%نمایش درصد برای حالت‌های خاص نظیر fmt.Printf("%05.2f%%", math.Pi)