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 后面的语句在定义的时候就决定了

 

posted @ 2018-12-01 21:04  __Miracle  阅读(90)  评论(0编辑  收藏  举报