Golang 菜鳥教程

Golang 控制語句

Golang 函數(shù) & 方法

Golang 結(jié)構(gòu)體

Golang 切片 & 數(shù)組

Golang 字符串(String)

Golang 指針

Golang 接口

Golang 并發(fā)

Golang 異常(Error)

Golang 其他雜項

Go 函數(shù)用作結(jié)構(gòu)體字段

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
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清