DAY10 函数

package main

import "fmt"

//a:=5//错误定义,全局变量不能使用简短定义

var a = 5 //类型推导

var b int = 6

func getSum(a int) int { //递归函数

    if a == 1 {

        return 1

    } else {

        return getSum(a-1) + a

    }

}

func feb(n int) int { //斐波那契数列

    if n == 1 {

        return 1

    } else if n == 2 {

        return 1

    } else {

        return feb(n-1) + feb(n-2)

    }

}

func fun1(a, b int) {

    fmt.Printf("a: %v\n", a)

    fmt.Printf("b: %v\n", b)

}

func main() {

    /*p

    1.局部变量和全局变量:

    局部变量:函数内部定义的变量,if/for语句中定义的变量作用域则仅限于此代码块

    全局变量:函数外部定义的变量,所有函数都可以使用,如果不想它被改变,可以设置为常量(const)

    2.defer语句:

    使用defer关键词来延迟一个函数或者方法的执行,满足栈的结构

    用法:

    A:对象.close(),临时文件的删除,在文件打开时直接写close操作

    B:go语言中关于异常的处理,使得panic()和recover(),pannic函数用于引起恐慌,导致程序中断执行

    recover()函数用于恢复程序的执行,recover()语法上要求必须在defer中执行


 

    3.函数:单纯打印函数名称,则为打印函数的地址,函数也是一个特殊的变量


 

    4.定义一个函数变量:

    var c func(int,int)

    c=fun1

    */

    fmt.Printf("a: %v\n", a)

    defer fmt.Printf("\nb: %v\n", b) //使用defer延迟代码的执行

    fmt.Println(getSum(100))

    for i := 1; i <= 20; i++ {

        fmt.Printf("%d\t", feb(i))

    }

    fmt.Printf("%T\n", feb)

    var c func(int) int

    c = getSum//将getSum函数地址赋值给c

    fmt.Println(c(5))

}

package main

import "fmt"

//a:=5//错误定义,全局变量不能使用简短定义
var a = 5 //类型推导
var b int = 6

func getSum(a int) int { //递归函数
	if a == 1 {
		return 1
	} else {
		return getSum(a-1) + a
	}
}

func feb(n int) int { //斐波那契数列
	if n == 1 {
		return 1
	} else if n == 2 {
		return 1
	} else {
		return feb(n-1) + feb(n-2)
	}
}

func fun1(a, b int) {
	fmt.Printf("a: %v\n", a)
	fmt.Printf("b: %v\n", b)
}
func main() {
	/*p
	1.局部变量和全局变量:
	局部变量:函数内部定义的变量,if/for语句中定义的变量作用域则仅限于此代码块
	全局变量:函数外部定义的变量,所有函数都可以使用,如果不想它被改变,可以设置为常量(const)

	2.defer语句:
	使用defer关键词来延迟一个函数或者方法的执行,满足栈的结构
	用法:
	A:对象.close(),临时文件的删除,在文件打开时直接写close操作
	B:go语言中关于异常的处理,使得panic()和recover(),pannic函数用于引起恐慌,导致程序中断执行
	recover()函数用于恢复程序的执行,recover()语法上要求必须在defer中执行


	3.函数:单纯打印函数名称,则为打印函数的地址,函数也是一个特殊的变量


	4.定义一个函数变量:
	var c func(int,int)
	c=fun1

	*/
	fmt.Printf("a: %v\n", a)
	defer fmt.Printf("\nb: %v\n", b) //使用defer延迟代码的执行
	fmt.Println(getSum(100))
	for i := 1; i <= 20; i++ {
		fmt.Printf("%d\t", feb(i))
	}
	fmt.Printf("%T\n", feb)
	var c func(int) int
	c = getSum//将getSum函数地址赋值给c
	fmt.Println(c(5))

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值