"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هياكل جولانج

هياكل جولانج

تم النشر بتاريخ 2024-11-08
تصفح:916

GoLang Structs

في Golang، الهياكل عبارة عن حاويات بسيطة للبيانات.

  • يمكن أن تحتوي على حقول
  • لا توجد طرق مرتبطة بهم
    • الطرق محددة بشكل منفصل ومرتبطة بنوع البنية.

يعرض ما يلي معادلات بسيطة لفئة الكتاب في روبي وGoLang.

class Book
  attr_reader(:title, :author)

  def initalize(title, author)
    @title  = title
    @author = authoer
  end
end

# usage
book = Book.new('Title', 'Jon Snow')
// Equivalent to `class Book` in ruby
type Book struct {
  Title string,
  Author string
}

إنشاء مثيل لنوع GoLang

حرفي مركب

المركب الحرفي عبارة عن بناء جملة لإنشاء أنواع مركبة في خطوة واحدة. يمكننا إنشاء الأنواع التالية:

  • الهياكل
  • المصفوفات
  • الشرائح
  • خرائط

نحن هنا نقوم بتعيين نسخة كتاب جديدة للمتغير book

// Composite Literal
book := Book{
  Title: "Title",
  Author: "Author"
}

باستخدام كلمة رئيسية جديدة

النموذج الأطول هو استخدام الكلمة الأساسية الجديدة. سيكون هذا مشابهًا للطريقة التي سنقوم بها بإنشاء مثيل لفصل دراسي في روبي باستخدام book = Book.new(..)

سنقوم بتعيين سمات الكتاب (أي العنوان والمؤلف) باستخدام = علامة.

// Using the `new` keyword
book        := new(Book)
book.Title  = "Book Title"
book.Author = "John Snow"

بدون إعلان قصير للمتغير (:=)

لاحظ أننا استخدمنا الرمز := في المثال الأول؟

إنه سكر نحوي للطريقة المطولة التالية للإعلان عن متغير وتعيين قيمة له.

// Without Short Virable Declaration

// Example 1
var book Book // Declare variable `book` of type `Book`
book.Title = "Book Title" // Assign the value to book variable
book.Author = "John Snow"

// Example 2
var count int
count = 20

وظيفة المصنع

يمكننا أيضًا استخدام نمط المصنع لتسهيل الأمر عند تهيئة البنية عندما نحتاج إلى:

  • إضافة منطق إضافي
  • إضافة القيم الافتراضية

بافتراض أننا نرغب في جعل كل حرف أول من عنوان الكتاب ورموز المؤلف المميزة مكتوبًا بالأحرف الكبيرة.

// Factory Function
func NewBook(title string, author string) Book {
  return Book{
    Title: titlelise(title), // default logic to "titlelise" 
    Author: titlelist(author)
  }
}

func titlelise(str string) {
  caser := cases.Title(lanaguage.English)
  return caser.String(str)
}

ربط دالة بالبنية

في روبي، نقوم ببساطة بتعريف وظيفة داخل الفصل. هنا، نقوم بتعريف دالة تسمى to_string() لطباعة اسم عنوان الكتاب المؤلف.

class Book
  attr_reader(:title, :author)

  def initalize(title, author)
    @title  = title
    @author = authoer
  end

  # new function we added
  def to_string()
    put "#{title} by #{string}"
  end
end

في GoLang، سنقوم "بإرفاق" الوظيفة عن طريق تمرير الدعامة إلى الوظيفة.

// Equivalent to `class Book` in ruby
type Book struct {
  Title string,
  Author string
}

// Attaching the function to the `struct`
func (book Book) ToString() string {
  return fmt.Sprintf("%s by %s", book.Title, book.Author)
}

// Usage
book := Book{
  Title: "Title",
  Author: "Author"
}

book.ToString()
// => Title by Author

شرح:

func (book Book) ToString() string
الرمز المميز وصف
الوظيفة الكلمة الرئيسية الوظيفية
(كتاب الكتاب) ربط الدالة بالنوع بنية الكتاب
- الكتاب: متغير للوصول إلى البنية داخل الوظيفة
- الكتاب: نوع البنية
ToString() اسم الدالة
خيط نوع الإرجاع للوظيفة
بيان الافراج تم نشر هذه المقالة على: https://dev.to/nerdherd/golang-structs-3o0k?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3