English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Golang中的结构或struct是用户定义的类型,它允许我们在一个单元中创建一组不同类型的元素。任何具有一组属性或字段的真实实体都可以表示为结构。我们知道在Go语言中函数也是用户定义的类型,所以你可以在Go结构中创建一个函数字段。您还可以使用匿名函数在Go结构中创建一个函数字段,如示例2所示。
语法:
type function_name func() type strcut_name struct{ var_name function_name }
让我们借助示例来讨论这个概念:
//作为Go结构中的字段 package main import "fmt" // Finalsalary函数类型 type Finalsalary func(int, int) int // إنشاء هيكل type Author struct { name string language string Marticles int Pay int // الدالة كحقل salary Finalsalary } func main() { // إعداد حقل الهيكل result := Author{ name: "Sonia", language: "Java", Marticles: 120, Pay: 500, salary func(Ma int, pay int) int { return Ma * pay , } fmt.Println("اسم الكاتب: ", result.name) fmt.Println("اللغة: ", result.language) fmt.Println("عدد المقالات المنشورة في مايو: ", result.Marticles) fmt.Println("أجر المقالة: ", result.Pay) fmt.Println("راتب إجمالي: ", result.salary(result.Marticles, result.Pay)) }
الإخراج:
اسم الكاتب: Sonia اللغة: Java عدد المقالات المنشورة في مايو: 120 أجر المقالة: 500 راتب إجمالي: 60000
استخدام دالة مجهولة النوع كحقل في هيكل Go 2:
// استخدام دالة مجهولة النوع كحقل في هيكل Go package main import "fmt" // إنشاء هيكل type Author struct { name string language string Tarticles int Particles int Pending func(int, int) int } func main() { // إعداد حقل الهيكل result := Author{ name: "Sonia", language: "Java", Tarticles: 340, Particles: 259, Pending: func(Ta int, Pa int) int { return Ta - Pa , } fmt.Println("اسم الكاتب: ", result.name) fmt.Println("اللغة: ", result.language) fmt.Println("عدد المقالات: ", result.Tarticles) fmt.Println("عدد المقالات المنشورة: ", result.Particles) fmt.Println("مقالات قيد المعالجة: ", result.Pending(result.Tarticles, result.Particles)) }
الإخراج:
اسم الكاتب: Sonia اللغة: Java عدد المقالات: 340 عدد المقالات المنشورة: 259 المقالة قيد المعالجة: 81