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 ها می باشد که برای مواقعی که قصد دارید یک مقدار را داخل رشته بزارید ولی از تایپ اون مقدار خبر ندارید می توانید v% کنید که هر نوع داده ای را قرار می دهد.

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)