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语言函数内容作用、声明、参数、返回值及其示例的学习整理笔记。

相关推荐

  1. Go 语言函数

    2024-07-17 14:26:03       72 阅读
  2. Go 语言函数

    2024-07-17 14:26:03       28 阅读
  3. Go语言函数

    2024-07-17 14:26:03       27 阅读
  4. Go语言 函数

    2024-07-17 14:26:03       17 阅读
  5. Go语言 接口型函数

    2024-07-17 14:26:03       61 阅读
  6. go语言学习--2.函数

    2024-07-17 14:26:03       29 阅读
  7. Go语言入门之函数

    2024-07-17 14:26:03       21 阅读
  8. Go语言入门:Go语言的方法,函数,接口】

    2024-07-17 14:26:03       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 14:26:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 14:26:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 14:26:03       58 阅读
  4. Python语言-面向对象

    2024-07-17 14:26:03       69 阅读

热门阅读

  1. Linux系统中通过Wine运行软件实现关机功能

    2024-07-17 14:26:03       20 阅读
  2. 基于redis的分布式锁

    2024-07-17 14:26:03       22 阅读
  3. 3 万字 25 道 Nginx经典面试题总结

    2024-07-17 14:26:03       21 阅读
  4. 翁恺-C语言程序设计-10-0. 说反话

    2024-07-17 14:26:03       14 阅读
  5. MVC、MVP和MVVM这三种设计模式的区别

    2024-07-17 14:26:03       24 阅读
  6. SCP 使用教程

    2024-07-17 14:26:03       29 阅读
  7. 【微信】签名生成-用户态签名

    2024-07-17 14:26:03       25 阅读
  8. 创建React项目:使用 create-react-app 创建 React 应用

    2024-07-17 14:26:03       19 阅读
  9. 【多线程】线程安全的单例模式

    2024-07-17 14:26:03       22 阅读
  10. 什么是区块链

    2024-07-17 14:26:03       23 阅读
  11. 速盾:ddos高防ip哪里好用?

    2024-07-17 14:26:03       25 阅读
  12. Feign客户端是什么,它跟Ribbon有什么区别?

    2024-07-17 14:26:03       22 阅读