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

浙公网安备 33010602011771号