توفر جولان العديد من الطرق الفعالة لعرض محتويات متغيرات التركيب في إخراج وحدة التحكم الخاصة بك. يستكشف هذا الدليل ثلاثة أساليب شائعة: تعريف التركيب، واستخدام دالة fmt.Printf
، واستخدام حزمة encoding/json
.
جدول المحتويات
إعلان التراكيب في جولان
قبل طباعة تركيب، يجب عليك تعريفه. يُجمّع التركيب قيمًا من أنواع مختلفة تحت اسم واحد. إليك مثال يمثل شخصًا:
package main
import "fmt"
type Person struct {
FirstName string
LastName string
Age int
}
func main() {
person := Person{FirstName: "John", LastName: "Doe", Age: 30}
// ... (سيتم وضع طرق الطباعة هنا) ...
}
يُعرّف هذا تركيب Person
مع حقول للاسم الأول، والاسم الأخير، والعمر. تم إنشاء مثيل، person
، وتم تهيئته.
استخدام fmt.Printf
يوفر fmt.Printf
إخراجًا مُنسقًا متعدد الاستخدامات. يمكنك طباعة حقول التركيب بشكل فردي، لكن هذا يصبح مُرهقًا بالنسبة للتراكيب الكبيرة.
package main
import "fmt"
type Person struct {
FirstName string
LastName string
Age int
}
func main() {
person := Person{FirstName: "John", LastName: "Doe", Age: 30}
fmt.Printf("الاسم: %s %s، العمر: %dn", person.FirstName, person.LastName, person.Age)
}
يطبع هذا معلومات الشخص باستخدام مُحددات التنسيق. على الرغم من كونه فعالاً، إلا أنه يتطلب تحديد كل حقل يدويًا.
الاستفادة من json.Marshal
توفر حزمة encoding/json
حلاً أكثر أناقة، خاصةً بالنسبة للتراكيب المعقدة. يحوّل json.Marshal
قيمة جولان إلى JSON، ثم يتم طباعتها. هذا يتعامل تلقائيًا مع جميع الحقول.
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
FirstName string `json:"firstName"`
LastName string `json:"lastName"`
Age int `json:"age"`
}
func main() {
person := Person{FirstName: "John", LastName: "Doe", Age: 30}
jsonData, err := json.Marshal(person)
if err != nil {
fmt.Println("خطأ:", err)
return
}
fmt.Println(string(jsonData))
}
يحوّل json.Marshal
person
إلى شريحة بايت JSON. تتحكم علامات json:"..."
في أسماء حقول JSON. معالجة الأخطاء أمر بالغ الأهمية. الإخراج هو تمثيل JSON مُنسق، مثالي للتسجيل أو تصحيح الأخطاء، ويتوسع جيدًا للتراكيب الكبيرة.
اختيار الطريقة المناسبة
يوفر fmt.Printf
تحكمًا دقيقًا للتراكيب البسيطة، بينما يوفر json.Marshal
حلاً مختصراً وقابلًا للتوسع للتراكيب المعقدة. يعتمد أفضل نهج على تعقيد التركيب والمتطلبات المحددة.