Latest web development tutorials

الذهاب بنية اللغة

تذهب مجموعة لغة يمكن تخزين نفس النوع من البيانات، ولكن في الهيكل، ويمكن أن نحدد عناصر مختلفة لأنواع مختلفة من البيانات.

ويتكون الهيكل من سلسلة من مجموعات البيانات من نفس النوع أو من أنواع مختلفة من البيانات تشكل.

يمثل بنية سجل، مثل توفير مكتبة قياسي من الكتب، كل كتاب له الخصائص التالية:

  • العنوان: العنوان
  • الكاتب: الكاتب
  • موضوع: الموضوع
  • الرقم: كتب معرف

تعريف الهيكل

يتم تعريف بنية ويتطلب استخدام بيان نوع البنية. والبنية تحديد نوع البيانات الجديد، وهيكل واحد أو أكثر من أعضاء. بيان نوع اسم يحدد هيكل. بنية الشكل هو على النحو التالي:

type struct_variable_type struct {
   member definition;
   member definition;
   ...
   member definition;
}

وبمجرد الانتهاء من تحديد نوع الهيكل، فإنه يمكن استخدامها لتعريف متغيرات، بناء الجملة كما يلي:

variable_name := structure_variable_type {value1, value2...valuen}

إلى هيكل

إذا كنت ترغب في الوصول إلى عضو بنية، استخدم عامل نقطة، والشكل (.) :. "اسم عضو بنية."

اكتب هيكل المتغير باستخدام تعريفات بنية الكلمة، والأمثلة على النحو التالي:

package main

import "fmt"

type Books struct {
   title string
   author string
   subject string
   book_id int
}

func main() {
   var Book1 Books        /* 声明 Book1 为 Books 类型 */
   var Book2 Books        /* 声明 Book2 为 Books 类型 */

   /* book 1 描述 */
   Book1.title = "Go 语言"
   Book1.author = "www.w3big.com"
   Book1.subject = "Go 语言教程"
   Book1.book_id = 6495407

   /* book 2 描述 */
   Book2.title = "Python 教程"
   Book2.author = "www.w3big.com"
   Book2.subject = "Python 语言教程"
   Book2.book_id = 6495700

   /* 打印 Book1 信息 */
   fmt.Printf( "Book 1 title : %s\n", Book1.title)
   fmt.Printf( "Book 1 author : %s\n", Book1.author)
   fmt.Printf( "Book 1 subject : %s\n", Book1.subject)
   fmt.Printf( "Book 1 book_id : %d\n", Book1.book_id)

   /* 打印 Book2 信息 */
   fmt.Printf( "Book 2 title : %s\n", Book2.title)
   fmt.Printf( "Book 2 author : %s\n", Book2.author)
   fmt.Printf( "Book 2 subject : %s\n", Book2.subject)
   fmt.Printf( "Book 2 book_id : %d\n", Book2.book_id)
}

أمثلة على تنفيذ نتائج التشغيل المذكورة أعلاه على النحو التالي:

Book 1 title : Go 语言
Book 1 author : www.w3big.com
Book 1 subject : Go 语言教程
Book 1 book_id : 6495407
Book 2 title : Python 教程
Book 2 author : www.w3big.com
Book 2 subject : Python 语言教程
Book 2 book_id : 6495700

هيكل كمعلمة وظيفة

يمكنك أحب أنواع البيانات الأخرى إلى نوع من بنية تمريرها إلى وظيفة كمعلمة. وعلى سبيل المثال أعلاه للوصول إلى متغير هيكل:

package main

import "fmt"

type Books struct {
   title string
   author string
   subject string
   book_id int
}

func main() {
   var Book1 Books        /* 声明 Book1 为 Books 类型 */
   var Book2 Books        /* 声明 Book2 为 Books 类型 */

   /* book 1 描述 */
   Book1.title = "Go 语言"
   Book1.author = "www.w3big.com"
   Book1.subject = "Go 语言教程"
   Book1.book_id = 6495407

   /* book 2 描述 */
   Book2.title = "Python 教程"
   Book2.author = "www.w3big.com"
   Book2.subject = "Python 语言教程"
   Book2.book_id = 6495700

   /* 打印 Book1 信息 */
   printBook(Book1)

   /* 打印 Book2 信息 */
   printBook(Book2)
}

func printBook( book Books ) {
   fmt.Printf( "Book title : %s\n", book.title);
   fmt.Printf( "Book author : %s\n", book.author);
   fmt.Printf( "Book subject : %s\n", book.subject);
   fmt.Printf( "Book book_id : %d\n", book.book_id);
}

أمثلة على تنفيذ نتائج التشغيل المذكورة أعلاه على النحو التالي:

Book title : Go 语言
Book author : www.w3big.com
Book subject : Go 语言教程
Book book_id : 6495407
Book title : Python 教程
Book author : www.w3big.com
Book subject : Python 语言教程
Book book_id : 6495700

مؤشر هيكل

يمكنك تعريف يشير المؤشر إلى بنية مماثلة لمتغير مؤشر آخر، والشكل هو على النحو التالي:

var struct_pointer *Books

المحددة أعلاه يمكن أن تعالج مؤشر ذاكرة المتغيرات بنية متغيرة. انظر هيكلة عنوان متغير، يمكنك وضع العلامة أمام المتغيرات هيكل:

struct_pointer = &Book1;

باستخدام مؤشر إلى عضو بنية هيكل، استخدم عامل "":

struct_pointer.title;

دعونا نستخدم مؤشر بنية إعادة كتابة المثال أعلاه، رمز أدناه:

package main

import "fmt"

type Books struct {
   title string
   author string
   subject string
   book_id int
}

func main() {
   var Book1 Books        /* Declare Book1 of type Book */
   var Book2 Books        /* Declare Book2 of type Book */

   /* book 1 描述 */
   Book1.title = "Go 语言"
   Book1.author = "www.w3big.com"
   Book1.subject = "Go 语言教程"
   Book1.book_id = 6495407

   /* book 2 描述 */
   Book2.title = "Python 教程"
   Book2.author = "www.w3big.com"
   Book2.subject = "Python 语言教程"
   Book2.book_id = 6495700

   /* 打印 Book1 信息 */
   printBook(&Book1)

   /* 打印 Book2 信息 */
   printBook(&Book2)
}
func printBook( book *Books ) {
   fmt.Printf( "Book title : %s\n", book.title);
   fmt.Printf( "Book author : %s\n", book.author);
   fmt.Printf( "Book subject : %s\n", book.subject);
   fmt.Printf( "Book book_id : %d\n", book.book_id);
}

أمثلة على تنفيذ نتائج التشغيل المذكورة أعلاه على النحو التالي:

Book title : Go 语言
Book author : www.w3big.com
Book subject : Go 语言教程
Book book_id : 6495407
Book title : Python 教程
Book author : www.w3big.com
Book subject : Python 语言教程
Book book_id : 6495700