函数的使用和10点注意事项(go语言基础语法)

函数的使用和10点注意事项

1.函数的基本概念

当我们写代码的时候,往往有一些代码可以重复使用,我们把这一些重复使用的的代码块包装成一个整体,当我们需要使用这一些代码时,只需要调用这个函数就可以(也就是直接使用这个打包的代码整体)

2.函数的定义

函数的基本形式:

func 函数名称 (参数列表)(返回值列表){

     函数体
     return 返回值
}

3.函数使用注意事项

1.函数名称要符合标识符命名规则,首字母的大小写决定了该函数在其他包的可见性:大时其他包可访问,小写时其他包不可访问。
2.函数的参数和返回值需要用()包裹。
3.函数体使用{ }包裹,且 { 必须位于函数返回值同行的行尾。
4.go语言的函数分为系统函数和自定义函数。
5.形参和实参的数据类型既可以是值类型也可以时引用类型。
6.函数内定义的变量只能在函数内使用,它是局部变量。
7.基本数据类型和数组默认都是值传递,也就是在函数体内对其做修改并不会影响其原本的值。如果希望在函数内对函数外的变量进行修改,我们在进行参数传递时应该传递其地址。从效果上看,类似引用。
8.在go中函数也是一种数据类型,我们可以将其赋给一个变量,那这个变量就是函数类型的变量了,可以通过该变量对函数进行调用。同时,函数作为一种数据类型,我们可以把它作为参数,进行调用。
例如:

func add(a,b int) int {
    return a+b
}
func main(){
    a:=add
    result:=a(50,60)
    //等价于result=add(50,60)
}

9.为了简化数据类型定义,go支持自定义数据类型。基本语法如下:

type  自定义数据类型名  数据类型
例如:type theINT  int
//此时我们可以使用theINT来替代int使用
//我们也可以理解为:theINT是int的一个别名
例如:type mymethod  func(int,int )  int
//此时我们可以理解为mymethod=func(int,int) int
//我们可以更加方便的对函数作为参数调用

10.使用_标识符忽略返回值
11.go支持可变参数

func f(args...int) int{
}//支持0到多个参数
func f(n1 int,args...int) int{
}
//支持1到多个参数
//说明args是slice(可理解为动态数组),通过slice[index]访问到各个值
//可变参数需要放在形参列表最后
类似的...

例如我们求1到多个int值的和

func sum(args...int) int{
   sum:=0
   for i:=0;i<len(args);i++{
     sum+=args[i]
   }
   return sum
}

4.函数基本形式的变形:

1.函数的参数和返回值都可以省略,默认返回值为0;
例如:

func f(){  //参数和返回值都没有
   fmt.Println("Hello")
}

func f() int {
   fmt.Println("Hello")
   return 0
}

2.多个相邻的的相同类似的参数可以简写
例如:

func f(a,b  int)  (int){
   fmt.Println("Hello")
   return 0
}

3.支持有名的返回值
例如:

func f(a,b  int)  (sum int){
   sum=a+b
   return //return sum的简写形式
}

注意:命名返回值变量后,其会被自动赋值为该类型的零值
4.不支持命名函数的嵌套定义,但允许匿名函数的嵌套定义
5.不支持函数重载和默认值函数

5.值传递和引用传递

1.如果我们希望函数内的变量修改函数外的变量,我可以使用引用传递
2.一般来说地址拷贝效率高,因为数据量小,而值拷贝决定拷贝的数据大小,数据越大,效率越低(如数据量大的结构体)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是一只土拨鼠呐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值