【Golang】✔️走进 Go 语言✔️ 第八课 函数
【摘要】
【Golang】✔️走进 Go 语言✔️ 第八课
概述函数函数定义函数传递参数函数传递地址函数闭包
概述
Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Gola...
概述
Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Golang 的世界. (第 8 课)
函数
函数 (Function) 是基本的代码的代码块, 用于执行一个任务. 我们可以通过函数来划分不同功能, 逻辑上每个函数执行的是指定的任务.
函数是声明告诉了编译器函数的名称, 返回类型, 参数. 并返回该类型的长度. 如果我们传入的是字符串则返回字符串的长度. 如果传入的是数组, 则返回数组中包含的元素个数.
函数定义
格式:
func 函数名( [参数列表] ) [返回值类型] {
函数体
}
- 1
- 2
- 3
- func: 函数由 func 开始声明, 类似 python 的 def
- 函数名: 函数的名称, 函数名和参数列表一起构成了函数签名
- 参数列表: 参数就像一个站位符. 当函数被调用时, 我们可以将值传递给参数, 这个值就被称为实际参数. 参数列表制定的是参数类型, 顺序, 以及参数个数. 参数是可选的, 也就是说函数也可以不含参数
- 返回值类型: 函数返回一列值的数据类型. 有些功能不需要返回值, 所以返回值类型不是必须的
例子:
package main
import "fmt"
func main() {
// 调用函数add
var sum = add(2, 3)
fmt.Print(sum)
}
func add(num1 int, num2 int) int {
// 返回和
return num1 + num2
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
输出结果:
5
- 1
函数传递参数
例子:
package main
import "fmt"
func main() {
// 定义变量
var num = 100
fmt.Println("值: ", num, "地址: ", &num)
// 调用函数
revalue(num)
}
func revalue(num int) {
num = 1000
// 调试输出值和地址
fmt.Println("值: ", num, "地址: ", &num)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
输出结果:
值: 100 地址: 0xc00000a088
值: 1000 地址: 0xc00000a0a8
- 1
- 2
我们可以看到两个num
的地址和值都不一样. main 里面的num
是实际参数, 而函数里的num
是形式参数.
函数传递地址
例子:
package main
import "fmt"
func main() {
// 定义变量
var num = 100
fmt.Println("值: ", num, "地址: ", &num)
// 调用函数
revalue(&num)
fmt.Println("值: ", num, "地址: ", &num)
}
func revalue(num *int) {
// 使用地址赋值
*num = 1000
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
输出结果:
值: 100 地址: 0xc00000a088
值: 1000 地址: 0xc00000a088
- 1
- 2
函数闭包
Go 语言支持匿名函数, 可作为闭包. 匿名函数是一 “内嵌” 语句或表达式. 匿名函数的优越性在于可以直接使用函数内的变量, 不必声明.
例子:
package main
import "fmt"
func main() {
// 匿名函数
var add = func(a int, b int) int {
return a + b
}
// 调试输出
fmt.Println(add(1, 2))
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
输出结果:
3
- 1
文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。
原文链接:iamarookie.blog.csdn.net/article/details/119559833
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)