Go语言中基础闭包的示例分析
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章将为大家详细讲解有关Go语言中基础闭包的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一. 闭包概述闭包就是解决局部变量不能被外部访问的一种解决方案
千家信息网最后更新 2025年11月14日Go语言中基础闭包的示例分析
这篇文章将为大家详细讲解有关Go语言中基础闭包的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一. 闭包概述
闭包就是解决局部变量不能被外部访问的一种解决方案
闭包是把函数当作返回值的一种应用
二. 代码演示
总体思想为:在函数内部定义局部变量,把另一个函数当作返回值,局部变量对于返回值函数相当于全部变量,所以多次调用返回值函数局部变量的值跟随变化。
// closure.gopackage mainimport ( "fmt" "strings")func main() { f := closure("http://", "com") fmt.Printf("%T %p \n", f, f) fmt.Println(f("baidu")) fmt.Println(f("qq")) fmt.Println(f("alipay.com")) fmt.Println("") f1 := closure("http://", "com") fmt.Printf("%T %p \n", f1, f1) fmt.Println(f1("baidu")) fmt.Println(f1("qq")) fmt.Println(f1("alipay.com"))}func closure(prefix, suffix string) func(url string) string { pre, suf := prefix, fmt.Sprintf(".%s", suffix) return func(url string) string { fmt.Printf("%p %p ", &pre, &suf) if !strings.HasPrefix(url, pre) { url = fmt.Sprintf("%s%s", pre, url) } if !strings.HasSuffix(url, suf) { url = fmt.Sprintf("%s%s", url, suf) } return url }}运行结果
$ go run closure.gofunc(string) string 0x4935600xc0000301d0 0xc0000301e0 http://baidu.com0xc0000301d0 0xc0000301e0 http://qq.com0xc0000301d0 0xc0000301e0 http://alipay.comfunc(string) string 0x4935600xc0000302d0 0xc0000302e0 http://baidu.com0xc0000302d0 0xc0000302e0 http://qq.com0xc0000302d0 0xc0000302e0 http://alipay.com
代码说明
第 2 行 返回的是变量 f 函数的 类型和 地址 ,函数在Go 语言中是引用类型。如果学过Java语言就知道,Java对象的内存空间有栈、堆、方法区、静态区。
第 3 - 5 行返回的是 pre suf 两个变量的地址,每一次调用是pre suf 地址都是不变的。
第 6 - 9 行这是新声明的 f1 变量,这时候 pre suf 的地址和上一次 f 的里面的 pre suf 地址是不一样的。
因为我们创建引用类型的变量时,其实只是一个标头值,标头值里包含一个指针,指针指向底层的数据,它所指向的底层结构没有被复制传递,这也引用类型比值类型传递更高效的原因。
关于"Go语言中基础闭包的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
变量
函数
闭包
地址
类型
语言
局部
篇文章
基础
示例
分析
代码
底层
指向
指针
更多
标头
不错
实用
两个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
斗斗堂多少天一个服务器
未来时空网络技术有限公司
数据库的不安全因素的事例
彩虹六号异种服务器链接出现错误
数据库标识增量怎么计算
网络安全漏洞专项治理工作方案
贵州创新网络技术服务技巧
结构化软件开发方法题目
wifi的位置服务器
程序从服务器下载到硬盘里
延吉国家网络安全宣传周
囯泰安数据库季度数据
青浦区工商软件开发销售价格
都江堰租房网络安全
维普数据库的用法
智能电子站牌软件开发
linux服务器拷贝文件
网络安全培训 百度文库
本地储存服务器
湖南网络安全设备
超微服务器初始化
中小学网络安全知识竞赛怎么进
河南微型软件开发要多少钱
深圳因网络安全法被罚企业
数据库删除姓名带江的
中航证券软件开发岗
买传奇服务器
杭州雷讯网络技术
web服务器怎么设置
我的世界服务器电脑手机能一起玩