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 方法

目录
相关文章
|
4月前
|
存储 算法 Go
go语言中的延迟执行函数
【5月更文挑战第13天】`defer`是Go语言中用于延迟执行函数的关键字,尤其适用于资源管理,如文件关闭和锁的释放。它在函数返回前按照LIFO顺序执行,确保资源在任何返回路径下都能正确释放。`defer`可以拦截`panic`并在函数返回前执行,但无法阻止某些致命的`panic`。此外,`defer`可用于修改返回值、输出调试信息和还原变量值。尽管在某些场景下可能影响性能,但Go的优化使得其在多数情况下性能表现良好,特别是在资源清理方面。在Go 1.20及以后的版本,`defer`的性能已显著提升,尤其是在高计算量的场景下。
262 2
|
1月前
|
Prometheus Cloud Native Go
Go 1.22 标准库 slices 新增函数和一些旧函数增加新特性
Go 1.22 标准库 slices 新增函数和一些旧函数增加新特性
|
1月前
|
安全 编译器 Go
Go 1.21: 泛型函数的全面回顾
Go 1.21: 泛型函数的全面回顾
|
1月前
|
Go
深入理解 Go 中的 new() 和 make() 函数
深入理解 Go 中的 new() 和 make() 函数
|
11天前
|
设计模式 Java 数据库连接
|
11天前
|
Go 开发者
|
14天前
|
存储 机器学习/深度学习 设计模式
Go从入门到放弃之函数
Go从入门到放弃之函数
|
1月前
|
Go 开发者
Go1.22 新特性:Slices 变更 Concat、Delete、Insert 等函数,对开发挺有帮助!
Go1.22 新特性:Slices 变更 Concat、Delete、Insert 等函数,对开发挺有帮助!
|
2月前
|
存储 Go
go语言中fmt格式化包和内置函数汇总
【7月更文挑战第10天】本文介绍fmt包和`Errorf`用于创建格式化的错误消息。`fmt`包还涉及一些接口,如`Formatter`、`GoStringer`、`ScanState`、`Scanner`和`Stringer`,支持自定义格式化和输入/输出处理。
38 1
|
4月前
|
编译器 Go
Go 语言函数
Go 语言函数
28 7