Golang✔️走进 Go 语言✔️ 第八课 函数

Posted 我是小白呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang✔️走进 Go 语言✔️ 第八课 函数相关的知识,希望对你有一定的参考价值。

【Golang】✔️走进 Go 语言✔️ 第八课

概述

Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Golang 的世界. (第 8 课)

函数

函数 (Function) 是基本的代码的代码块, 用于执行一个任务. 我们可以通过函数来划分不同功能, 逻辑上每个函数执行的是指定的任务.


函数是声明告诉了编译器函数的名称, 返回类型, 参数. 并返回该类型的长度. 如果我们传入的是字符串则返回字符串的长度. 如果传入的是数组, 则返回数组中包含的元素个数.

函数定义

格式:

func 函数名( [参数列表] ) [返回值类型] {
    函数体
}
  • 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
}

输出结果:

5

函数传递参数

例子:

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)
}

输出结果:

值:  100 地址:  0xc00000a088
值:  1000 地址:  0xc00000a0a8

我们可以看到两个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
}

输出结果:

值:  100 地址:  0xc00000a088
值:  1000 地址:  0xc00000a088

函数闭包

Go 语言支持匿名函数, 可作为闭包. 匿名函数是一 “内嵌” 语句或表达式. 匿名函数的优越性在于可以直接使用函数内的变量, 不必声明.

例子:

package main

import "fmt"

func main() {

	// 匿名函数
	var add = func(a int, b int) int {
		return a + b
	}

	// 调试输出
	fmt.Println(add(1, 2))
	
}

输出结果:

3

以上是关于Golang✔️走进 Go 语言✔️ 第八课 函数的主要内容,如果未能解决你的问题,请参考以下文章

Golang✔️走进 Go 语言✔️ 第十八课 通道关闭 & 工作池

Golang✔️走进 Go 语言✔️ 第十八课 通道关闭 & 工作池

Golang✔️走进 Go 语言✔️ 第九课 局部变量 vs 全局变量

Golang✔️走进 Go 语言✔️ 第九课 局部变量 vs 全局变量

Golang✔️走进 Go 语言✔️ 第一课 Hello World

Golang✔️走进 Go 语言✔️ 第二十一 延迟处理 & 正则表达式