go10 函数

简介: go10 函数

go10 函数

为什么需要函数

做一件事通常需要很多步骤,每个步骤可以分解为独立的函数,这些函数以后可能会复用到。

函数声明


Go 在标准库文档中列出了标准库每个包中声明的函数。

例如:

  • rand 包的 Intn:func Intn(n int) int
  • 它的用法:num := rand.Intn(10)

使用 func 关键字声明函数:


193893817b2447b59873205317cd2e51.png


在 Go 里,大写字母开头的函数、变量或其它标识符都会被导出,对其它包可用。

小写字母开头的就不行。

形式参数:parameter

实际参数:argument


函数声明 – 多个参数

函数的参数可以是多个:


func Unix(sec int64, nsec int64) Time


调用:future := time.Unix(12622780800, 0)


函数声明时,如果多个形参类型相同,那么该类型只写一次即可:


func Unix(sec int64, nsec int64) Time


func Unix(sec, nsec int64) Time


这种简化是可选的。

函数声明 – 返回多个值


Go 的函数可以返回多个值:


countdown, err := strconv.Atoi(“10”)

该函数的声明如下:


func Atoi(s string) (i int, err error)

函数的多个返回值需要用括号括起来,每个返回值名字在前,类型在后。声明函数时可以把名字去掉,只保留类型:


func Atoi(s string) (int, error)


函数声明 – 可变参数函数

Println 是一个特殊的函数,它可以接收一个、二个甚至多个参数,参数类型还可以不同:


fmt.Println(“Hello, playground”)


fmt.Println(186, “seconds”)


Println 的声明是这样的:


func Println(a …interface{}) (n int, err error)


… 表示函数的参数的数量是可变的。


参数 a 的类型为 interface{},是一个空接口。


… 和空接口组合到一起就可以接受任意数量、类型的参数了

89079a5197214b51bd0529e908459109.png

130a51e18699455a967c6d8dd5702f18.png


【上一讲】go09 类型转换

【下一讲】go11 方法

目录
相关文章
|
2月前
|
JSON 安全 网络协议
go语言使用内置函数和标准库
【10月更文挑战第18天】
22 3
|
8月前
|
存储 算法 Go
go语言中的延迟执行函数
【5月更文挑战第13天】`defer`是Go语言中用于延迟执行函数的关键字,尤其适用于资源管理,如文件关闭和锁的释放。它在函数返回前按照LIFO顺序执行,确保资源在任何返回路径下都能正确释放。`defer`可以拦截`panic`并在函数返回前执行,但无法阻止某些致命的`panic`。此外,`defer`可用于修改返回值、输出调试信息和还原变量值。尽管在某些场景下可能影响性能,但Go的优化使得其在多数情况下性能表现良好,特别是在资源清理方面。在Go 1.20及以后的版本,`defer`的性能已显著提升,尤其是在高计算量的场景下。
283 2
|
4月前
|
Go
go函数
go函数
38 10
|
4月前
|
编译器 Go C++
Go to Learn Go之函数
Go to Learn Go之函数
34 0
|
4月前
|
编译器 Go 索引
Go数组、多维数组和切片(动态数组),及常用函数len(),cap(),copy(),append()在切片中的使用
本文介绍了Go语言中数组、多维数组和切片(动态数组)的基本概念和操作,包括数组的定义、初始化、访问,多维数组的定义和访问,以及切片的创建、使用和扩容。同时,还讲解了切片中常用的函数len()、cap()、copy()和append()的使用方法。
|
5月前
|
Prometheus Cloud Native Go
Go 1.22 标准库 slices 新增函数和一些旧函数增加新特性
Go 1.22 标准库 slices 新增函数和一些旧函数增加新特性
|
5月前
|
安全 编译器 Go
Go 1.21: 泛型函数的全面回顾
Go 1.21: 泛型函数的全面回顾
|
5月前
|
Go
深入理解 Go 中的 new() 和 make() 函数
深入理解 Go 中的 new() 和 make() 函数
|
5月前
|
设计模式 Java 数据库连接
|
5月前
|
Go 开发者