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
#
Verb | fmt.Printf("{{Verb}}", []int64{0, 1}) خروجی | توضیحات |
---|
%v | [0 1] | فرمت پیشفرض |
%#v | []int64{0, 1} | قالببندی کد گو |
%T | []int64 | تایپ مقدار |
توجه کنید v%
یکی از پرکاربردترین Verbها در گولنگ است و مواقعی مورد استفاده قرار میگیرد که شما قصد دارید یک مقدار را داخل رشته بزارید، ولی از تایپ اون مقدار خبر ندارید.
1.15.1.2 قالببندی اعداد صحیح
#
Verb | fmt.Printf("{{Verb}}", 15) خروجی | توضیحات |
---|
%d | 15 | عدد پایه ۱۰ |
%+d | +15 | نمایش + در کنار عدد |
%4d | ␣␣15 | ۴ کارکتر با فاصله از راست |
%-4d | 15 ␣␣ | ۴ کارکتر با فاصله از چپ |
%04d | 0015 | نمایش عدد با پیشوند صفر |
%b | 1111 | عدد با پایه باینری |
%o | 17 | عدد با پایه ۸ اکتال |
%x | f | عدد با پایه ۱۶ هگز حروف کوچک |
%X | F | عدد با پایه ۱۶ هگز حروف بزرگ |
%#x | 0xf | عدد با پایه ۱۶ هگز به همراه 0x |
1.15.1.3 قالببندی اعداد اعشاری
#
Verb | fmt.Printf("{{Verb}}", 123.456) خروجی | توضیحات |
---|
%e | 1.234560e+02 | نمایش بصورت نماد عملی |
%f | 123.456000 | نقطه اعشاری، بدون نما. دقت پیش فرض 6 است |
%.2f | 123.46 | عرض پیش فرض، دقت 2 رقم بعد از نقطه اعشار |
%8.2f | ␣␣123.46 | عرض 8 کاراکتر، دقت 2 رقم بعد از نقطه اعشار. کاراکتر پیشفرض padding space است |
%08.2f | 00123.46 | عرض 8 کاراکتر، دقت 2 رقم بعد از نقطه اعشار. لایه سمت چپ با نویسه مشخص شده (اینجا، 0) |
%g | 123.456 | نما در صورت نیاز، فقط ارقام ضروری |
1.15.1.4 قالببندی کارکترها
#
Verb | fmt.Printf("{{Verb}}", 'A') خروجی | توضیحات |
---|
%c | A | کارکتر |
%q | 'A' | کارکتر به همراه تک کوتیشن |
%U | U+0041 | یونیکد |
%#U | U+0041 'A' | یونیکد به همراه کارکتر |
1.15.1.5 قالببندی رشته (string) و slice بایت
#
Verb | fmt.Printf("{{Verb}}", "gophers") خروجی | توضیحات |
---|
%s | gophers | رشته ساده |
%8s | ␣␣gophers | با ۸ پدینگ راست چین شده |
%-8s | gophers ␣␣ | با ۸ پدینگ چپ چین شده |
%q | "gophers" | رشته به همراه دابل کوتیشن |
%x | 676f7068657273 | خروجی هگز مقدار |
% x | 67 6f 70 68 65 72 73 | خروجی هگز مقدار با فاصله |
1.15.1.6 قالببندی بولین
#
Verb | fmt.Printf("{{Verb}}", true) خروجی | توضیحات |
---|
%t | true | نمایش مقدار بولین در رشته |
1.15.1.6 قالببندی اشارهگر (pointer)
#
Verb | fmt.Printf("{{Verb}}", new(int)) خروجی | توضیحات |
---|
%p | 0xc0000b2000 | نمایش آدرس حافظه با پایه ۱۶ به همراه 0x |
1.15.2 مقادیر خاص در رشته
#
همانطور که گفتیم زبان گو یکسری کارکترهای خاص دارد که باعث تغییراتی در خروجی رشته خواهد شد و این کارکترهای خاص بین همه زبانها مشترک هستند. در ادامه لیست این کاراکترها را آوردهایم:
Verb | توضیحات |
---|
\a | U+0007 هشدار یا زنگ |
\b | U+0008 بک اسپیس backspace |
\\ | U+005c بک اسلش backslash |
\t | U+0009 تب بصورت افقی |
\n | U+000A خط جدید |
\f | U+000C حالت فرم |
\r | U+000D حالت برگشت |
\v | U+000b تب بصورت عمودی |
%% | نمایش درصد برای حالتهای خاص نظیر fmt.Printf("%05.2f%%", math.Pi) |