Go Programming

طباعة متغيرات البنية بكفاءة في Go

Spread the love

توفر جولان العديد من الطرق الفعالة لعرض محتويات متغيرات التركيب في إخراج وحدة التحكم الخاصة بك. يستكشف هذا الدليل ثلاثة أساليب شائعة: تعريف التركيب، واستخدام دالة 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 حلاً مختصراً وقابلًا للتوسع للتراكيب المعقدة. يعتمد أفضل نهج على تعقيد التركيب والمتطلبات المحددة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *