ما علامات Struct؟
أرفق بيانات وصفية بالحقول
ما علامات Struct؟ درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.
ما هي وسمات البنى
وَسْم البنية هو سلسلة نصية من البيانات الوصفية مرفقة بحقل من حقول البنية. ولا يؤثر في قيمة الحقل، لكنه يحمل تعليمات للمكتبات التي تقرؤه.
صيغة الوسوم
تظهر الوسوم بعد نوع الحقل، وتكون محاطة بعلامات اقتباس السلسلة الخام. كل وسم هو زوج key:"value". وتفصل المسافات بين الأزواج المتعددة.
يبدو الوسم المعتاد مثل json:"name".
بنية تحمل وسمًا
يحمل أحد الحقول هنا وسم json يخبر أدوات الترميز باستخدام اسم المفتاح بالأحرف الصغيرة.
package main
import "fmt"
type User struct {
Name string "json:\"name\""
}
func main() {
u := User{Name: "Ann"}
fmt.Println(u.Name)
}الوسوم مجرد بيانات وصفية
لا تغير الوسوم طريقة استخدام الشفرة للحقل. يظل u.Name يعمل بصورة طبيعية. ولا تهم الوسوم إلا للمكتبات التي تفحصها باستخدام الانعكاس.
وسوم متعددة لحقل واحد
يمكن لحقل واحد أن يحتوي على عدة مفاتيح للوسوم، يستخدم كل منها مكتبة مختلفة.
package main
import "fmt"
type Product struct {
Name string "json:\"name\" db:\"product_name\""
}
func main() {
p := Product{Name: "Pen"}
fmt.Println(p.Name)
}مفاتيح الوسوم الشائعة
تتضمن مفاتيح الوسوم المستخدمة بكثرة:
json- ترميز JSONxml- ترميز XMLdb- ربط أعمدة قاعدة البياناتvalidate- قواعد التحقق
قراءة الوسوم عبر الانعكاس
تتيح حزمة reflect قراءة الوسوم أثناء التشغيل. تعيد field.Tag.Get("json") قيمة مفتاح json.
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string "json:\"name\""
}
func main() {
t := reflect.TypeOf(User{})
f := t.Field(0)
fmt.Println(f.Tag.Get("json"))
}الدالة Tag.Get
تعيد Tag.Get(key) قيمة مفتاح ما، أو سلسلة فارغة إذا كان المفتاح غير موجود. كما تشير Tag.Lookup(key) إلى ما إذا كان المفتاح موجودًا.
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string "json:\"name\""
}
func main() {
f := reflect.TypeOf(User{}).Field(0)
val, ok := f.Tag.Lookup("json")
fmt.Println(val, ok)
}اصطلاح تنسيق الوسوم
صيغة الوسم القياسية هي key:"value" من دون مسافات حول النقطتين. تتوقع المكتبات هذا الاصطلاح. وقد تُتجاهل الوسوم ذات الصيغة غير الصحيحة بصمت.
لماذا نستخدم الوسوم
تتيح لك الوسوم الاحتفاظ بقواعد الربط بجوار الحقول التي تصفها، بدلًا من وضعها في إعدادات منفصلة. ويمكن لبنية واحدة أن تخدم إخراج JSON وصفوف قاعدة البيانات والتحقق، وكل ذلك اعتمادًا على الوسوم.
الوسوم في الحقول غير المصدَّرة
تظهر الوسوم في الحقول غير المصدَّرة، أي ذات الأسماء المكتوبة بالأحرف الصغيرة، عبر الانعكاس، لكن معظم أدوات الترميز تتخطى الحقول غير المصدَّرة بالكامل. اجعل الحقول التي تريد إجراء التسلسل لها مصدَّرة، أي تبدأ بحرف كبير.
تحقق سريع
ما الغرض من وسم البنية؟
مراجعة
وسوم البنى:
- بيانات وصفية مرفقة بالحقول بصيغة
key:"value" - لا تؤثر في الشفرة العادية؛ وتُقرأ عبر الانعكاس
- تستخدمها json وxml وdb وvalidate وغيرها
الأسئلة الشائعة
هل درس «ما علامات Struct؟» مجاني؟
نعم — نص درس «ما علامات Struct؟» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.
ماذا ستتعلم في «ما علامات Struct؟»؟
أرفق بيانات وصفية بالحقول تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟
لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «ما علامات Struct؟»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟
نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ما علامات Struct؟
- علامات JSON
- مكتبات التحقّق
- تحليل العلامات المخصّصة