阅读 231

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


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐