Go之路(十):函数
函数
package main import( "fmt" ) type add_func func(a,b int) int func add(a,b int)int{ return a+b } func test(fc add_func, a int, b int) int{ return fc(a,b) } func main() { c := add fmt.Println(c) sum := test(c,100,200) fmt.Println(sum) }
1.type可以用来声明新的类型
2.函数也是类型
3.函数传值分为值类型和指针类型,指针类型加* ,另外 chan map slice 默认为指针类型。
4.返回值可以命名
5.可变参数
arg是保存所有参数的数组。
package main import( "fmt" ) type add_func func(a,b int) int func add(a int , arg...int )int{ var result int = a for _, value := range arg{ result += value } return result } func main() { c := add fmt.Println(c) sum := c(1,2,3,4,5) fmt.Println(sum) }
defer 关键字
package main import( "fmt" ) func main() { for i := 0; i < 5 ; i++{ defer fmt.Println(i) } }
结果是43210
因为会把defer语句放在栈内,等主函数结束后再执行defer语句。defer 后面的语句在定义的时候就决定了