Pergi struktur bahasa


Array dalam bahasa Go boleh menyimpan jenis data yang sama, tetapi dalam struktur kita boleh menentukan jenis data yang berbeza untuk item yang berbeza.

Struktur ialah pengumpulan data yang terdiri daripada satu siri data daripada jenis yang sama atau jenis yang berbeza. Struktur

mewakili rekod, seperti menyimpan rekod buku dalam perpustakaan Setiap buku mempunyai atribut berikut:

  • Tajuk: Tajuk

  • <. 🎜>
  • Pengarang: Pengarang

  • Subjek: Subjek

  • ID: ID Buku


Takrifkan struktur

Takrifan struktur memerlukan penggunaan jenis dan pernyataan struktur. Pernyataan struct mentakrifkan jenis data baharu, dan struktur mempunyai satu atau lebih ahli. Pernyataan jenis menetapkan nama struktur. Format struktur adalah seperti berikut:

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

Setelah jenis struktur ditakrifkan, ia boleh digunakan untuk pengisytiharan pembolehubah Format sintaks adalah seperti berikut:

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


Mengakses struktur. ahli

Jika anda ingin mengakses ahli struktur, anda perlu menggunakan pengendali titik (.), dalam format: "struktur.nama ahli".

Pembolehubah jenis struktur ditakrifkan menggunakan kata kunci struct Contohnya adalah seperti berikut:

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.php.cn"
   Book1.subject = "Go 语言教程"
   Book1.book_id = 6495407

   /* book 2 描述 */
   Book2.title = "Python 教程"
   Book2.author = "www.php.cn"
   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)
}

Hasil pelaksanaan contoh di atas ialah:

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


Struktur sebagai parameter fungsi

Anda boleh menghantar jenis struktur sebagai parameter kepada fungsi sama seperti jenis data lain. Dan akses pembolehubah struktur dengan cara contoh di atas:

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.php.cn"
   Book1.subject = "Go 语言教程"
   Book1.book_id = 6495407

   /* book 2 描述 */
   Book2.title = "Python 教程"
   Book2.author = "www.php.cn"
   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);
}

Hasil pelaksanaan contoh di atas ialah:

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


Penunjuk struktur

Anda boleh menentukan penunjuk kepada struktur Penunjuk adalah serupa dengan pembolehubah penunjuk lain, dan formatnya adalah seperti berikut:

var struct_pointer *Books

Pembolehubah penunjuk yang ditakrifkan di atas boleh menyimpan alamat pembolehubah struktur. Untuk melihat alamat pembolehubah struktur, anda boleh meletakkan simbol & di hadapan pembolehubah struktur:

struct_pointer = &Book1;

Gunakan penunjuk struktur untuk mengakses ahli struktur, gunakan operator "." >Seterusnya mari Kita menulis semula contoh di atas menggunakan penunjuk struktur Kodnya adalah seperti berikut:

struct_pointer.title;

Hasil pelaksanaan contoh di atas ialah:

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.php.cn"
   Book1.subject = "Go 语言教程"
   Book1.book_id = 6495407

   /* book 2 描述 */
   Book2.title = "Python 教程"
   Book2.author = "www.php.cn"
   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);
}