Go最全 Go------函数(init,包,闭包),2024年Golang网络编程总结篇
warning:
这篇文章距离上次修改已过182天,其中的内容可能已经有所变动。
在Go语言中,init函数是一个特殊的函数,无需人工调用,在程序启动时自动被调用执行。它通常用于初始化包的变量或者进行一些程序启动前的准备工作。
- 包初始化
Go语言中,每个包可以包含一个或多个init函数。当程序启动时,Go会自动调用同一个包的init函数,然后按照依赖关系依次调用所有包的init函数。
package main
import (
"fmt"
)
func init() {
fmt.Println("init function in main package")
}
func main() {
fmt.Println("main function")
}
在上述代码中,init函数在main函数之前执行,因此会首先打印 "init function in main package"。
- 闭包
闭包是一个函数和该函数声明时所处的环境的组合。在Go语言中,我们可以通过使用函数内部创建一个匿名函数,这个匿名函数可以访问外部函数的变量,这就形成了一个闭包。
package main
import (
"fmt"
)
func main() {
add := func(a int) func(int) int {
return func(b int) int {
return a + b
}
}
f := add(5)
fmt.Println(f(3)) // 输出 8
}
在上述代码中,add函数返回一个匿名函数,这个匿名函数引用了外部add函数的变量a,因此形成了一个闭包。当我们调用f(3)时,实际上是调用了返回的匿名函数,并传入了参数3,此时闭包环境中的变量a的值为5,因此计算结果为8。
- 包的导入
在Go语言中,我们可以通过import关键字导入其他包。导入包后,可以通过包名前缀访问包中的导出变量和函数。
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Sqrt(4)) // 输出 2
}
在上述代码中,我们导入了Go标准库中的math包,并通过math.Sqrt函数计算4的平方根。
总结:以上就是Go语言中关于init、包和闭包的基本概念和使用方法。在实际编程中,合理地使用这些特性可以提高代码的可读性和可维护性。
评论已关闭