golang-函数

8 篇文章 0 订阅

函数定义

一个函数结构如下:

func function_name( [parameter list] param type ) [return_types] {
   函数体
}

参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。

函数声明告诉了编译器函数的名称,返回类型,和参数,且必须有一个main函数。

所有的函数参数都是值拷贝传入的,函数参数将不再是函数调用时的原始变量。必要时可以添加指针

 

 

函数传参

tips:go语言中没有默认参数

传参方式:

1、接收可变参数

func demo2(a ...int) int {  // 参数后面加...表示可变参数
    res :=0
    for _, value := range a{ // 可变参数在函数体中是切片类型
        res += value
    }
    return res
}

func main() {
    res := demo2(1,2)
    // slice :=[]int{1,2,3}
    // res: = demo(slice...) 如果要直接传切片,只需在后面加...即可
    // res := demo2()  只有可变参数时,也可不传参
    fmt.Println(res) // 3
}

func demo2(b int,  a ...int)  // 如果固定参数与可变参数同时出现,可变参数要放在后面

2、多个参数类型简写

func demo2(a, b  int) {  //  a ,b都是int类型

}

 

 

函数返回值

1、go函数可以返回多个值

2、如果定义了函数返回值的名称,则在函数体中无需再次声明,并且return时可不写该变量名称

3、返回一个值时,如果有名字,要加括号。如果return了多个值,必须要有括号,并且其中一个值有了名字,则另一个必须也要有。

 

 

函数可以作为变量

getSquareRoot := func(x float64) float64 {
      return math.Sqrt(x)
   }

   /* 使用函数 */
   fmt.Println(getSquareRoot(9))

 

 

go回调函数

func main() {
	testCallBack(1, callBack)
	testCallBack(2, func(x int) int {
		fmt.Printf("我是回调,x:%d\n", x)
		return x
	})
}

type  cb func(int2 int) int

func callBack(x int) int {
	fmt.Printf("我是回调,x:%d\n", x)
	return x
}

func testCallBack(x int, f cb) {
	f(x)
}

 

 

函数作为参数

func demo(a,b int, op func(c,d int) int) int {
	return op(a,b)

}

func op(a,b int) int {
	return a + b
}

res := demo(1,2,op)
fmt.Println(res) // 3

 

 

空函数

func (f *Logger) Close() {
	
}

什么都不做,只为了满足某种条件

 

 

本文为原创,转载请注明出处

 

文章目录

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值