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 Número total de artículos publicados: 259 Artículos por procesar: 81