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