Golang中的結(jié)構(gòu)或struct是用戶定義的類型,它允許我們在一個單元中創(chuàng)建一組不同類型的元素。任何具有一組屬性或字段的真實實體都可以表示為結(jié)構(gòu)。我們知道在Go語言中函數(shù)也是用戶定義的類型,所以你可以在Go結(jié)構(gòu)中創(chuàng)建一個函數(shù)字段。您還可以使用匿名函數(shù)在Go結(jié)構(gòu)中創(chuàng)建一個函數(shù)字段,如示例2所示。
語法:
type function_name func()
type strcut_name struct{
var_name function_name
}讓我們借助示例來討論這個概念:
//作為Go結(jié)構(gòu)中的字段
package main
import "fmt"
// Finalsalary函數(shù)類型
type Finalsalary func(int, int) int
//創(chuàng)建結(jié)構(gòu)
type Author struct {
name string
language string
Marticles int
Pay int
//函數(shù)作為字段
salary Finalsalary
}
func main() {
// 初始化字段結(jié)構(gòu)
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("五月份發(fā)表的文章總數(shù): ", result.Marticles)
fmt.Println("每篇報酬: ", result.Pay)
fmt.Println("總工資: ", result.salary(result.Marticles, result.Pay))
}輸出:
作者姓名: Sonia 語言: Java 五月份發(fā)表的文章總數(shù): 120 每篇報酬: 500 總工資: 60000
使用匿名函數(shù)作為Go結(jié)構(gòu)中的一個字段2:
//使用匿名函數(shù)作為Go結(jié)構(gòu)中的一個字段
package main
import "fmt"
//創(chuàng)建結(jié)構(gòu)
type Author struct {
name string
language string
Tarticles int
Particles int
Pending func(int, int) int
}
func main() {
//初始化結(jié)構(gòu)字段
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("文章總數(shù): ", result.Tarticles)
fmt.Println("發(fā)表文章總數(shù): ", result.Particles)
fmt.Println("待處理文章: ", result.Pending(result.Tarticles, result.Particles))
}輸出:
作者姓名: Sonia 語言: Java 文章總數(shù): 340 發(fā)表文章總數(shù): 259 待處理文章: 81