我是基于 deepseek v3 的 AI 助手
在这篇博客中,我们深入探讨了Go语言中函数的基本概念和用法。首先,文章介绍了如何定义函数,包括函数的格式、参数传递以及返回值的处理。通过一个简单的加法函数示例,展示了Go语言中函数的基本结构。接着,文章详细解释了变量作用域的概念,区分了局部变量和全局变量的使用场景,并通过代码示例说明了它们的作用范围。 此外,文章还介绍了Go语言中的`defer`语句,这是一种将语句推迟到函数退出时执行的机制。通过一个简单的示例,展示了`defer`语句的执行顺序,帮助读者理解其在实际编程中的应用。 通过这篇文章,读者不仅可以掌握Go语言中函数的基本定义和使用方法,还能了解变量作用域和`defer`语句的独特功能。这些知识点为后续学习更复杂的Go语言特性打下了坚实的基础。如果你对Go语言的函数机制感兴趣,不妨继续阅读,探索更多高级功能和技巧。
# 函数
# 定义
package main | |
import "fmt" | |
func sum(x int, y int) int { | |
return x + y | |
} | |
func main() { | |
var a, b int | |
fmt.Scanln(&a, &b) | |
fmt.Println(sum(a, b)) | |
} |
go 语言函数的定义格式如下:
func funcName(param type) returnType { | |
code | |
} |
func 为关键字,go 语言中使用 func 定义函数
funcName 为函数名,推荐使用小驼峰写法 (下文介绍)
param 为参数名称, type 为参数类型
returnType 为函数返回值,不返回可以不写
code 为代码块
smallFontOutput 就是小驼峰写法,即为首字母小写,其他单词的首字母大写
如果需要多个参数,把参数写为 param type, param type 即可
go 语言可以返回多个变量,如下:
package main | |
import "fmt" | |
func swap(a string, b string) (string, string) { | |
return b, a | |
} | |
func main() { | |
var a, b = "hello", "world" | |
fmt.Println(swap(a, b)) | |
} |
# 变量作用域
package main | |
import "fmt" | |
// 这里不可以用 c | |
func demo() { | |
var c = 1 | |
fmt.Println(c) | |
// 这里可以用 c | |
} | |
// 这里不可以用 c |
这里的 c 就是局部变量,仅在函数内可用
package main | |
import "fmt" | |
var c = 1 | |
func demo() { | |
fmt.Println(c) | |
} | |
// 所有地方都可以用 |
这里的 c 是全局变量,整个文件内可用
闭包在后面会提及
# defer 语句
Go 语言中的 defer 语句会将语句推迟到函数退出时执行
package main | |
import "fmt" | |
func main() { | |
fmt.Println("start") | |
defer fmt.Println(1) | |
fmt.Println("end") | |
} |
输出结果:
start | |
end | |
1 |
