zoukankan      html  css  js  c++  java
  • go 函数类型

    在go中,函数也可以被当成数据类型

    e.g:下面有两个函数,+、-,然后定义了一个函数类型FuncType1,然后对funcType1附于不同的函数,则funcType1就可以执行相应的函数

    package main
    
    import (
       "fmt"
       _ "testinit"
    )
    
    
    func main() {
       a:=10
       b:=10
       var funcType1 FuncType1  = Add1
       fmt.Println(funcType1(a,b))
       funcType1 = Minus1
       fmt.Println(funcType1(a,b))
    }
    
    func init()  {
       fmt.Println("main init()")
    }
    
    func Add1(a,b int) int {
       return a+b
    }
    
    func Minus1(a,b int) int  {
       return a-b
    }
    
    //定义函数类型
    type FuncType1 func(int,int) int
    

     这样就是对funcType1附了两次值,还可以进一步调整,如下

    package main
    
    import (
    	"fmt"
    	_ "testinit"
    )
    
    
    func main() {
    	a:=10
    	b:=10
    	/*var funcType1 FuncType1  = Add1
    	fmt.Println(funcType1(a,b))
    	funcType1 = Minus1
    	fmt.Println(funcType1(a,b))*/
    
    	fmt.Println(Cal(a,b,Add1))
    
    	fmt.Println(Cal(a,b,Minus1))
    }
    
    func init()  {
    	fmt.Println("main init()")
    }
    
    func Add1(a,b int) int {
    	return a+b
    }
    
    func Minus1(a,b int) int  {
    	return a-b
    }
    
    type FuncType1 func(int,int) int
    
    //定义函数,将函数类型当成一种函数参数 func Cal(a,b int,funcType FuncType1) (result int) { return funcType(a,b) }

      

    定义一个新的函数,将函数类型当成一种函数参数,这样就可以不用给函数类型附值,而直接用,方便了很多,也灵活了很多
  • 相关阅读:
    COGS727 [网络流24题] 太空飞行计划
    Bzoj1692 洛谷P2870 [Usaco2007 Dec]队列变换
    Bzoj1029 [JSOI2007]建筑抢修
    Bzoj3168 [Heoi2013]钙铁锌硒维生素
    Bzoj4566 [Haoi2016]找相同字符
    Bzoj4771 七彩树
    Bzoj2597 [Wc2007]剪刀石头布
    Bzoj4773 负环
    HDU5772 String problem
    Bzoj1324 Exca王者之剑
  • 原文地址:https://www.cnblogs.com/lilyjia/p/9946377.html
Copyright © 2011-2022 走看看