Go语言中基础闭包的示例分析
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关Go语言中基础闭包的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一. 闭包概述闭包就是解决局部变量不能被外部访问的一种解决方案
千家信息网最后更新 2026年11月03日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安全错误
数据库的锁怎样保障安全
科技互联网
江苏根荣互联网科技
互联网的科技
科技企业和互联网企业
深圳科技互联网
美国互联网科技
互联网 卓越科技
互联网科技ppt模板
广州凡科互联网科技
人人互联网科技是培训
华脉科技工业互联网产品
开启互联网科技时代小说
福州新华互联网科技学校 知乎
来此购互联网科技有限公司
互联网科技与管理
互联网科技与大数据专业
互联网科技和法律行业
互联网科技创新的路径
南京一网一红互联网科技有限公司
互联网界的黑科技
精品咖啡豆
平安科技 互联网
互联网 科技创业
互联网科技美容
乌苏新华互联网科技做什么的
天津腾达互联网科技有限公司
雨阳互联网卡科技有限公司
云南互联网科技学费
广西泛欧互联网科技有限公司
上海互联网科技园景观