2.GO-可变参数函数,匿名函数和函数变量
2019-08-04 20:26
1391 查看
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 }
相关文章推荐
- go实例—函数或方法的可变长参数
- 第六周笔记 函数可变参数 返回值 作用域 递归 匿名函数 生成器
- Go by Example: Variadic Functions(可变参数函数)
- php匿名函数 与 可变参数函数
- 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
- php匿名函数和可变参数函数
- C 语言的可变参数表函数的设计
- Python函数的可变参数
- 可变参数函数
- C语言中可变参数的函数
- 可变参数函数定义及其陷井
- python函数的参数(默认参数、可变参数、关键字参数和参数组合)
- C++可变参数的函数
- c 可变参数 定义可变参数的函数
- [C/C++]函数参数的入栈顺序与可变参数的实现
- C和指针之实现可变参数函数编译出现expanded from macro 'va_arg' #define va_arg(ap, type) 解决办法
- 可变参数列表的函数调用 va_list va_start va_arg va_end
- C 函数的可变参数列表
- 【转】Python可变长度的函数参数
- 可变参数函数设计