自学内容网 自学内容网

Go语言 函数

本文主要为Go语言函数内容作用、声明、参数、返回值及其示例的学习整理笔记。

目录

函数

函数的作用

函数声明

函数声明格式

说明

函数示例

优化sum形参

多值返回

忽略错误

命名返回参数

可变参数

示例1:

示例2:

包级函数

匿名函数和闭包

总结


函数

函数的作用

通过函数,可以把开发任务分解成一个个小的单元,

这些小单元可以被其他单元复用,

进而提高开发效率、降低代码重合度

函数声明

变量名称在前,变量类型在后

变量名称叫作参数名称,也就是函数的形参

函数声明格式

func main(){

}

任何一个函数的定义,都有一个 func关键字

main 是函数的名字

main 函数名字后面的一对括号()是不能省略的

括号里可以定义函数使用的参数

括号()后还可以有函数的返回值

最后是大括号 函数体

说明

函数格式及参数示例:

func funcName(params) result {
   body
}
// 关键字 func
// 函数名字 funcName
// 函数的参数 params,用来定义形参的变量名和类型
// result 是返回的函数值,用于定义返回值的类型
// body 就是函数体,可以在这里写函数的代码逻辑

 

函数示例

两数相加的求和函数,示例如下:

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

 

函数调用

在main函数中对sum函数进行调用。

示例如下:

func main() {
   result := sum(1, 2)
   fmt.Println(result)
}

 

优化sum形参

优化sum形参类型定义,如果两个数类型相同即可省略第一个参数的类型定义。

示例如下:

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

 

多值返回

Go 语言的函数可以返回多个值,也就是多值返回。

比如:第一个值返回函数的结果,第二个值返回函数出错的信息。

还是以求和函数为例。示例如下:

func main() {
   result, flag := sum(-1, 2)
   fmt.Println(result, flag)
}

func sum(a, b int) (int, error) {
   if a < 0 || b < 0 {
      return 0, errors.New("a或者b不能为负数")
   }
   return a + b, nil
}

忽略错误

返回多个值可以使用逗号分隔,但是返回类型要与返回类型声明相同

如果不想要error变量,可以用以下方式丢弃:

result, _ := sum(-1, 0)

命名返回参数

函数的返回值也可以有变量名称。

如果在函数内部对返回变量进行命名,则return也可以不进行返回。

示例如下:

func sum(a, b int) (sum int, err error) {
   if a < 0 || b < 0 {
      return 0, errors.New("a或者b不能为负数")
   }
   sum = a + b
   err = nil
   return
}

 

可变参数

可变参数:是指参数的参数数量是可变的。

示例1:

系统的打印函数,示例如下:

fmt.Println()
fmt.Println("你好")
fmt.Println("你好", "世界")
示例2:

修改求和函数改为可变参数,示例如下:

func main() {
   fmt.Println(sum1(1, 2))
   fmt.Println(sum1(1, 2, 3))
   fmt.Println(sum1(1, 2, 3, 4))
}

func sum1(params...int) int  {
   sum :=0
   for _,i := range params{
      sum +=i
   }
   return sum
}

可变参数的实质是切片。

包级函数

不管是自定义的函数 sum、sum1

还是我们使用到的函数 Println,

都会从属于一个包也就是 package

不同包的函数要被调用,那么函数的作用域必须是公有的

也就是函数名称的首字母要大写,大写字母开头的函数相当于public,

小写字母开头的函数相当于private,只有相同包名的文件才能使用。

函数名称首字母小写代表私有函数,只有在同一个包中才可以被调用

函数名称首字母大写代表公有函数,不同的包也可以调用。

任何一个函数都会从属于一个包。

匿名函数和闭包

匿名函数就是没有名字的函数。

示例如下:

func main() {
sum2 := func(a, b int) int {
      return a+b
   }
   fmt.Println(sum2)
}

在函数中再定义函数(函数嵌套),定义的这个匿名函数,也可以称为内部函数。

更重要的是,在函数内定义的内部函数,可以使用外部函数的变量等,这种方式也称为闭包。

总结

本文主要为Go语言函数内容作用、声明、参数、返回值及其示例的学习整理笔记。


原文地址:https://blog.csdn.net/json_ligege/article/details/140488793

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!