English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 基础教程

Golang 控制语句

Golang 函数 & 方法

Golang 结构体

Golang 切片 & 数组

Golang 字符串(String)

Golang 指针

Golang 接口

Golang 并发

Golang 异常(Error)

Golang 其他杂项

الوظيفة كحقل المبنى بلغة Go

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