English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans Golang, une structure ou struct est un type utilisateur défini, qui nous permet de créer un ensemble d'éléments de différents types dans une unité. Toute entité réelle ayant un ensemble d'attributs ou de champs peut être représentée par une structure. Nous savons que dans le langage Go, une fonction est également un type utilisateur défini, donc vous pouvez créer un champ de fonction dans une structure Go. Vous pouvez également créer un champ de fonction anonyme dans une structure Go, comme dans l'exemple2comme indiqué.
Syntaxe :
type function_name func() type strcut_name struct{ var_name function_name }
Laissez-nous discuter de ce concept à l'aide d'un exemple :
//En tant que champ dans une structure Go package main import "fmt" // Type Finalsalary type Finalsalary func(int, int) int //Création de la structure type Author struct { name string language string Marticles int Pay int //Fonction comme champ salary Finalsalary } func main() { // Initialisation des champs de la structure result := Author{ name: "Sonia", language: "Java", Marticles: 120, Pay: 500, salary: func(Ma int, pay int) int { return Ma * pay , } fmt.Println("Nom de l'auteur: ", result.name) fmt.Println("Langue: ", result.language) fmt.Println("Nombre total d'articles publiés en mai: ", result.Marticles) fmt.Println("Prime par article: ", result.Pay) fmt.Println("Salaire total: ", result.salary(result.Marticles, result.Pay)) }
Sortie :
Nom de l'auteur: Sonia Langue: Java Nombre total d'articles publiés en mai: 120 Prime par article: 500 Salaire total: 60000
Utilisation de la fonction anonyme comme champ d'une structure Go2:
//Utilisation de la fonction anonyme comme champ d'une structure Go package main import "fmt" //Création de la structure type Author struct { name string language string Tarticles int Particles int Pending func(int, int) int } func main() { //Initialisation des champs de la structure result := Author{ name: "Sonia", language: "Java", Tarticles: 340, Particles: 259, Pending: func(Ta int, Pa int) int { return Ta - Pa , } fmt.Println("Nom de l'auteur: ", result.name) fmt.Println("Langue: ", result.language) fmt.Println("Nombre total d'articles: ", result.Tarticles) fmt.Println("Nombre total d'articles publiés: ", result.Particles) fmt.Println("Articles à traiter: ", result.Pending(result.Tarticles, result.Particles)) }
Sortie :
Nom de l'auteur: Sonia Langue: Java Nombre total d'articles: 340 Nombre total d'articles publiés: 259 Article à traiter: 81