في 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 }
المركب الحرفي عبارة عن بناء جملة لإنشاء أنواع مركبة في خطوة واحدة. يمكننا إنشاء الأنواع التالية:
نحن هنا نقوم بتعيين نسخة كتاب جديدة للمتغير 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() | اسم الدالة |
خيط | نوع الإرجاع للوظيفة |
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3