توفر Go دعمًا مدمجًا لإنشاء محتوى ديناميكي أو عرض خرج مخصص
للمستخدم باستخدام الحزمة text/template. توفر الحزمة الشقيقة
html/template الواجهة البرمجية نفسها، لكنها تتمتع بمزايا أمان
إضافية وينبغي استخدامها لإنشاء HTML.
packagemain
import("os""text/template")
funcmain(){
يمكننا إنشاء قالب جديد وتحليل محتواه من سلسلة نصية.
تجمع القوالب بين نص ثابت و«إجراءات» محاطة بـ{{...}}، تُستخدم
لإدراج المحتوى ديناميكيًا.
t1:=template.New("t1")t1,err:=t1.Parse("Value is {{.}}\n")iferr!=nil{panic(err)}
بدلًا من ذلك، يمكننا استخدام الدالة template.Must لاستدعاء
panic إذا أعادت Parse خطأ. يفيد ذلك خصوصًا مع القوالب
المهيأة في النطاق العام.
t1=template.Must(t1.Parse("Value: {{.}}\n"))
«بتنفيذ» القالب، نُنشئ نصه باستخدام قيم محددة لإجراءاته.
يُستبدل الإجراء {{.}} بالقيمة الممررة كمُعامِل إلى
Execute.
توفر if/else تنفيذًا شرطيًا للقوالب. تُعد القيمة false إذا
كانت القيمة الافتراضية لنوع، مثل 0 أو سلسلة نصية فارغة أو
مؤشر nil، وما إلى ذلك. توضح هذه العينة ميزة أخرى للقوالب:
استخدام - في الإجراءات لإزالة المسافات البيضاء.
t3:=Create("t3","{{if . -}} yes {{else -}} no {{end}}\n")t3.Execute(os.Stdout,"not empty")t3.Execute(os.Stdout,"")
تتيح لنا كتل range اجتياز الشرائح أو المصفوفات أو الخرائط
أو القنوات. داخل كتلة range، تُضبط {{.}} على العنصر الحالي
من الاجتياز.