Aller à la structure du langage


Les tableaux en langage Go peuvent stocker le même type de données, mais dans les structures, nous pouvons définir différents types de données pour différents éléments.

Une structure est une collection de données composée d'une série de données du même type ou de types différents. La structure

représente un enregistrement, comme la sauvegarde des enregistrements d'un livre dans une bibliothèque. Chaque livre a les attributs suivants :

  • Titre : Titre

  • <. 🎜>
  • Auteur : Auteur

  • Sujet : Sujet

  • ID : ID du livre


Définir la structure

La définition de la structure nécessite l'utilisation d'instructions de type et de structure. L'instruction struct définit un nouveau type de données et la structure comporte un ou plusieurs membres. L'instruction type définit le nom de la structure. Le format de la structure est le suivant :

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

Une fois le type de structure défini, il peut être utilisé pour la déclaration des variables. Le format de la syntaxe est le suivant :

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


Accès à la structure. membres

Si vous souhaitez accéder aux membres de la structure, vous devez utiliser l'opérateur point (.), au format : "structure.member name".

Les variables de type structure sont définies à l'aide du mot-clé struct. L'exemple est le suivant :

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)
}

Le résultat de l'exécution de l'exemple ci-dessus est :

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


Structure as. paramètre de fonction

Vous pouvez transmettre des types de structure en tant que paramètres aux fonctions, tout comme les autres types de données. Et accédez à la variable de structure à la manière de l'exemple ci-dessus :

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);
}

Le résultat de l'exécution de l'exemple ci-dessus est :

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


Pointeur de structure

Vous pouvez définir un pointeur vers la structure Le pointeur est similaire aux autres variables pointeurs, et le format est le suivant :

var struct_pointer *Books

La variable pointeur définie ci-dessus peut stocker l'adresse de la variable structure. Pour afficher l'adresse de la variable de structure, vous pouvez placer le symbole & devant la variable de structure :

struct_pointer = &Book1;

Utilisez le pointeur de structure pour accéder aux membres de la structure, utilisez l'opérateur "." >Ensuite, réécrivons l'exemple ci-dessus en utilisant un pointeur de structure. Le code est le suivant :

struct_pointer.title;

Le résultat de l'exécution de l'exemple ci-dessus est :

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);
}

.