• 2.GO-可变参数函数、匿名函数和函数变量


    2.1.可变参数函数

    • 可变参数指参数的个数可以是任意个
    • 可变参数必须在参数列表最后的位置,在参数名和类型之间添加三个点表示可变参数函数
    • 声明函数时,在函数体把可变参数当作切片使用即可
    package main
    
    import "fmt"
    
    func demo(name string, hover ... string)  {
    	fmt.Println(name,"的爱好是")
    
    	for i,n := range  hover{
    		fmt.Println(i,n)
    	}
    }
    
    func main() {
    	demo("derek","看书","打球","游戏")
    }
    
    //结果
    derek 的爱好是
    0 看书
    1 打球
    2 游戏
    

    2.2.匿名函数

    package main
    
    import "fmt"
    
    func main() {
    	//第一种:无参数无返回值
    	func(){
    		fmt.Println("无参数无返回值匿名函数")
    	}()
    
    	//第二种:有参数
    	func(name string){
    		fmt.Println("名字为:",name)
    	}("derek")
    
    	//第三种:有返回值
    	name := func() string{
    		return "zhang_derek"
    	}()
    	fmt.Println(name)
    }
    

    2.3.函数变量

     在go语言中函数也是一种类型

    • 定义完函数变量后,可以使用匿名函数进行赋值,也可以使用已经定义好的函数进行赋值
    • 函数变量定义以后与普通函数调用语法相同,变量名就是普通函数声明的函数名
    • 函数变量是除了slice,map,channel,interface外第五种引用类型

     (1)函数变量是引用类型

    package main
    
    import "fmt"
    
    func b()  {
    	fmt.Println("bbb")
    }
    
    func main() {
    	//函数变量是引用类型
    	var a func()
    	a = b
    	//内存地址相同
    	fmt.Println(a,b)     //0x47d820 0x47d820
    }
    

    (2)函数作为参数

    package main
    
    import "fmt"
    
    func mydo(arg func(name string))  {
    	fmt.Println("执行mydo")
    	arg("derek")
    }
    
    func main() {
    	mydo(func(name string) {
    		fmt.Println(name)
    	})
    }
    

    (3)函数作为返回值

    package main
    
    import "fmt"
    
    //函数作为返回值
    func a() func() int{
    	return func() int {
    		return 110
    	}
    }
    
    func main() {
    	result := a()
    	r2 := result()
    	fmt.Println(r2)    //110
    }

     

  • 相关阅读:
    [转]java抽象类和接口和继承之间关系
    HTML accesskey 属性
    [转]OGNL使用小结
    [转] iBATIS框架理论学习篇
    Python Pyramid with MySQL
    Python Pyramid with PostgreSQL
    PostgreSQL 安装
    wpa_supplicant on linux
    postgresql 常用命令 {转载}
    Arduino 各种模块篇 [留个小任务,现在去学习python 网络编程]
  • 原文地址:https://www.cnblogs.com/derek1184405959/p/11299348.html
Copyright © 2020-2023  润新知