Go最全 Go------函数(init,包,闭包),2024年Golang网络编程总结篇

在Go语言中,init函数是一个特殊的函数,无需人工调用,在程序启动时自动被调用执行。它通常用于初始化包的变量或者进行一些程序启动前的准备工作。

  1. 包初始化

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"。

  1. 闭包

闭包是一个函数和该函数声明时所处的环境的组合。在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。

  1. 包的导入

在Go语言中,我们可以通过import关键字导入其他包。导入包后,可以通过包名前缀访问包中的导出变量和函数。




package main
 
import (
    "fmt"
    "math"
)
 
func main() {
    fmt.Println(math.Sqrt(4)) // 输出 2
}

在上述代码中,我们导入了Go标准库中的math包,并通过math.Sqrt函数计算4的平方根。

总结:以上就是Go语言中关于init、包和闭包的基本概念和使用方法。在实际编程中,合理地使用这些特性可以提高代码的可读性和可维护性。

最后修改于:2024年08月24日 21:48

评论已关闭

推荐阅读

Vue中使用mind-map实现在线思维导图
2024年08月04日
VUE
Web前端最全Vue实现免密登录跳转的方式_vue怎么样不登录返回首页,最强技术实现
2024年08月04日
VUE
vue3 项目搭建教程(基于create-vue,vite,Vite + Vue)
2024年08月04日
VUE
Vue-颜色选择器实现方案——>Vue-Color( 实战*1+ Demo*7)
2024年08月04日
VUE
Vue项目卡顿慢加载?这些优化技巧告诉你!_vue数据多渲染卡顿
2024年08月04日
VUE
vue中的keep-alive详解与应用场景
2024年08月04日
VUE
Vue、React实现excel导出功能(三种实现方式保姆级讲解)
2024年08月04日
vue-office/docx插件实现docx文件预览
2024年08月04日
VUE
java调用js文件的两种方法(支持V8引擎)
2024年08月04日
JavaScript:解决计算精度问题/mathjs/bignumber.js/big.js/decimal.js
2024年08月04日
两周从爬虫小白变大神 _yjs_js_security_passport
2024年08月04日
JS笔记(对象、函数、数组)
2024年08月04日
Markdown.js:强大的纯JavaScript Markdown解析器
2024年08月04日
Vue项目:js模拟点击a标签下载文件并重命名,URL文件地址下载方法、请求接口下载文件方法总结。
2024年08月04日
vue 父组件怎么获取子组件里面的data数据
2024年08月04日
VUE
个人开发实现AI套壳网站快速搭建(Vue+elementUI+SpringBoot)
2024年08月04日
el-table 表格封装并改造实现单元格可编辑
2024年08月04日
none
nodejs环境下创建vue项目、SSH密钥登陆!!!
2024年08月04日
vue+quill+element-ui实现视频、图片上传及缩放保姆级教程,轻松使用富文本
2024年08月04日
【three.js】22. Imported Models导入模型
2024年08月04日