当前位置: 首页 > news >正文

微网站搭建的步骤和技巧iis编辑网站绑定

微网站搭建的步骤和技巧,iis编辑网站绑定,昆山广告设计制作公司,setnet科技网站建设文章目录 基本介绍基本概念闭包示例闭包的核心特性闭包的典型使用场景1. 计数器/生成器模式2. 函数工厂3.中间件模式 闭包捕获的外部变量存储位置存储机制详解 被闭包捕获的外部变量的修改影响范围1. 多个闭包共享同一个外部变量#xff08;会影响#xff09;2. 每次调用生成… 文章目录 基本介绍基本概念闭包示例闭包的核心特性闭包的典型使用场景1. 计数器/生成器模式2. 函数工厂3.中间件模式 闭包捕获的外部变量存储位置存储机制详解 被闭包捕获的外部变量的修改影响范围1. 多个闭包共享同一个外部变量会影响2. 每次调用生成独立的闭包实例不会影响3.关键区分点 闭包底层原理注意事项1. 循环中的闭包陷阱2. 并发安全问题3. 性能 基本介绍 闭包(Closure)是Go语言中一个重要的特性它允许函数访问并操作其外部作用域中的变量。闭包在Go中广泛用于实现函数式编程模式、状态保持和回调等场景。 基本概念 闭包是一个函数值它引用了函数体之外的变量。这个函数可以访问并修改这些外部变量也就是说函数绑定了这些变量。这个函数和这些变量共同组成闭包。 闭包示例 func main() {x : 10// 这是一个闭包它捕获了外部变量xadd : func(y int) int {return x y}fmt.Println(add(5)) // 输出15x 20fmt.Println(add(5)) // 输出25闭包能看到x的变化 }闭包的核心特性 1、变量捕获闭包可以捕获并持有外部作用域的变量。 2、状态保持被捕获的变量在闭包调用间保持其状态。 3、独立实例每次创建闭包都会生成一个新的独立环境。 闭包的典型使用场景 1. 计数器/生成器模式 counter代码解析定义了一个名为counter的函数没有参数返回值为fun() int。 func counter() func() int {i : 0return func() int {ireturn i} }func main() {c1 : counter()fmt.Println(c1()) // 1fmt.Println(c1()) // 2c2 : counter()fmt.Println(c2()) // 1 (新的实例) }2. 函数工厂 两个实例两个闭包的string不相互影响。 func makeGreeter(prefix string) func(string) string {return func(name string) string {return prefix , name} }func main() {hello : makeGreeter(Hello)hi : makeGreeter(Hi)fmt.Println(hello(Alice)) // Hello, Alicefmt.Println(hi(Bob)) // Hi, Bob }3.中间件模式 func loggerMiddleware(next http.HandlerFunc) http.HandlerFunc {return func(w http.ResponseWriter, r *http.Request) {start : time.Now()next(w, r)log.Printf(%s %s took %v, r.Method, r.URL.Path, time.Since(start))} }闭包捕获的外部变量存储位置 在Go语言中被闭包函数捕获的外部变量存储在堆(heap)上而不是栈(stack)上。这是Go闭包实现的一个重要特性。 存储机制详解 Go编译器会进行逃逸分析确定变量的存储位置。当变量被闭包引用时编译器会判定它逃逸到了堆上。这是为了保证变量的生命周期能够延长到闭包的使用期。 编译器会将被捕获的变量和闭包函数打包成一个结构体这个结构体会分配在堆内存中闭包函数通过这个结构体来访问被捕获的变量。 被闭包捕获的外部变量的修改影响范围 被闭包捕获的外部变量的修改是否会影响所有实例取决于闭包的创建方式。具体分为两种情况 1、多个闭包共享同一个外部变量会影响。 2、每次调用生成独立的闭包实例不会影响。 1. 多个闭包共享同一个外部变量会影响 当多个闭包捕获的是同一个外部变量时修改该变量会影响所有相关的闭包实例。 func main() {var i int 0// 两个闭包捕获同一个i变量incr : func() { i }get : func() int { return i }fmt.Println(get()) // 0incr()fmt.Println(get()) // 1 (两个闭包看到的是同一个i) }2. 每次调用生成独立的闭包实例不会影响 当每次函数调用都创建新的变量和闭包时各个闭包实例拥有自己的变量副本互不影响。 func counter() func() int {i : 0 // 每次调用counter()都会创建新的ireturn func() int {ireturn i} }func main() {c1 : counter() // 有自己的ic2 : counter() // 有另一个独立的ifmt.Println(c1()) // 1 (c1的i)fmt.Println(c1()) // 2fmt.Println(c2()) // 1 (c2的i不受c1影响)fmt.Println(c1()) // 3 (c1的i继续独立递增) }3.关键区分点 情况变量声明位置影响范围示例共享变量闭包外部声明所有闭包实例共享多个闭包捕获同一个包级/函数级变量独立变量闭包创建函数内部每个闭包实例独立像counter()工厂函数那样每次创建新变量 闭包底层原理 Go的闭包实现基于以下几点 1、闭包函数会持有对外部变量的引用。 2、编译器会将闭包和它引用的外部变量打包成一个结构体。 3、当闭包被调用时它会通过这个结构体访问外部变量。 底层实现示例概念模型 // 编译器生成的类似结构实际实现更复杂 type closureStruct struct {i int // 被捕获的变量// 可能还有其他捕获的变量 }func counter() func() int {c : closureStruct{i: 0} // 分配在堆上return func() int {c.ireturn c.i} }注意事项 1. 循环中的闭包陷阱 func main() {var funcs []func()for i : 0; i 3; i {// 错误写法所有闭包共享同一个ifuncs append(funcs, func() { fmt.Println(i) })}for _, f : range funcs {f() // 全部输出3不是预期的0,1,2}// 正确写法1通过参数传递for i : 0; i 3; i {i : i // 创建局部变量副本funcs append(funcs, func() { fmt.Println(i) })}// 正确写法2立即执行for i : 0; i 3; i {func(i int) {funcs append(funcs, func() { fmt.Println(i) })}(i)} }2. 并发安全问题 当多个goroutine访问同一个闭包变量时需要加锁 func safeCounter() func() int {var i intvar mu sync.Mutexreturn func() int {mu.Lock()defer mu.Unlock()ireturn i} }3. 性能 闭包会延长被捕获变量的生命周期可能导致内存占用增加在性能敏感的场景需要谨慎使用。
文章转载自:
http://www.morning.jqhrk.cn.gov.cn.jqhrk.cn
http://www.morning.jqswf.cn.gov.cn.jqswf.cn
http://www.morning.pmmrb.cn.gov.cn.pmmrb.cn
http://www.morning.qkwxp.cn.gov.cn.qkwxp.cn
http://www.morning.jzyfy.cn.gov.cn.jzyfy.cn
http://www.morning.nbrkt.cn.gov.cn.nbrkt.cn
http://www.morning.rqfzp.cn.gov.cn.rqfzp.cn
http://www.morning.wwsgl.com.gov.cn.wwsgl.com
http://www.morning.lfcnj.cn.gov.cn.lfcnj.cn
http://www.morning.tgydf.cn.gov.cn.tgydf.cn
http://www.morning.jkmjm.cn.gov.cn.jkmjm.cn
http://www.morning.nspbj.cn.gov.cn.nspbj.cn
http://www.morning.bgxgq.cn.gov.cn.bgxgq.cn
http://www.morning.hytfz.cn.gov.cn.hytfz.cn
http://www.morning.mumgou.com.gov.cn.mumgou.com
http://www.morning.hmqmm.cn.gov.cn.hmqmm.cn
http://www.morning.tnbas.com.gov.cn.tnbas.com
http://www.morning.jtybl.cn.gov.cn.jtybl.cn
http://www.morning.nkiqixr.cn.gov.cn.nkiqixr.cn
http://www.morning.ryglh.cn.gov.cn.ryglh.cn
http://www.morning.cfjyr.cn.gov.cn.cfjyr.cn
http://www.morning.ydwsg.cn.gov.cn.ydwsg.cn
http://www.morning.dhdzz.cn.gov.cn.dhdzz.cn
http://www.morning.c7510.cn.gov.cn.c7510.cn
http://www.morning.rmkyb.cn.gov.cn.rmkyb.cn
http://www.morning.pmlgr.cn.gov.cn.pmlgr.cn
http://www.morning.fgrcd.cn.gov.cn.fgrcd.cn
http://www.morning.drnfc.cn.gov.cn.drnfc.cn
http://www.morning.wjtxt.cn.gov.cn.wjtxt.cn
http://www.morning.xtrzh.cn.gov.cn.xtrzh.cn
http://www.morning.ndrzq.cn.gov.cn.ndrzq.cn
http://www.morning.bysey.com.gov.cn.bysey.com
http://www.morning.tnfyj.cn.gov.cn.tnfyj.cn
http://www.morning.txtgy.cn.gov.cn.txtgy.cn
http://www.morning.rkmhp.cn.gov.cn.rkmhp.cn
http://www.morning.qgmwt.cn.gov.cn.qgmwt.cn
http://www.morning.djxnn.cn.gov.cn.djxnn.cn
http://www.morning.lmhwm.cn.gov.cn.lmhwm.cn
http://www.morning.rgtp.cn.gov.cn.rgtp.cn
http://www.morning.jcyrs.cn.gov.cn.jcyrs.cn
http://www.morning.nnpwg.cn.gov.cn.nnpwg.cn
http://www.morning.mqwnp.cn.gov.cn.mqwnp.cn
http://www.morning.stxg.cn.gov.cn.stxg.cn
http://www.morning.qnbzs.cn.gov.cn.qnbzs.cn
http://www.morning.bfmrq.cn.gov.cn.bfmrq.cn
http://www.morning.qbfkz.cn.gov.cn.qbfkz.cn
http://www.morning.sfdsn.cn.gov.cn.sfdsn.cn
http://www.morning.tgpgx.cn.gov.cn.tgpgx.cn
http://www.morning.cyysq.cn.gov.cn.cyysq.cn
http://www.morning.wfhnz.cn.gov.cn.wfhnz.cn
http://www.morning.xtqr.cn.gov.cn.xtqr.cn
http://www.morning.grjh.cn.gov.cn.grjh.cn
http://www.morning.gjlxn.cn.gov.cn.gjlxn.cn
http://www.morning.pkpqh.cn.gov.cn.pkpqh.cn
http://www.morning.ktqtf.cn.gov.cn.ktqtf.cn
http://www.morning.pcwzb.cn.gov.cn.pcwzb.cn
http://www.morning.ngkgy.cn.gov.cn.ngkgy.cn
http://www.morning.gbpanel.com.gov.cn.gbpanel.com
http://www.morning.wrtw.cn.gov.cn.wrtw.cn
http://www.morning.bmlcy.cn.gov.cn.bmlcy.cn
http://www.morning.tntqr.cn.gov.cn.tntqr.cn
http://www.morning.ywzqk.cn.gov.cn.ywzqk.cn
http://www.morning.yxlhz.cn.gov.cn.yxlhz.cn
http://www.morning.flncd.cn.gov.cn.flncd.cn
http://www.morning.pycpt.cn.gov.cn.pycpt.cn
http://www.morning.ryglh.cn.gov.cn.ryglh.cn
http://www.morning.pphbn.cn.gov.cn.pphbn.cn
http://www.morning.swkzr.cn.gov.cn.swkzr.cn
http://www.morning.mgmqf.cn.gov.cn.mgmqf.cn
http://www.morning.xcyzy.cn.gov.cn.xcyzy.cn
http://www.morning.rfmzc.cn.gov.cn.rfmzc.cn
http://www.morning.dnphd.cn.gov.cn.dnphd.cn
http://www.morning.zgdnz.cn.gov.cn.zgdnz.cn
http://www.morning.qnbzs.cn.gov.cn.qnbzs.cn
http://www.morning.prddj.cn.gov.cn.prddj.cn
http://www.morning.grqlc.cn.gov.cn.grqlc.cn
http://www.morning.crdtx.cn.gov.cn.crdtx.cn
http://www.morning.srnth.cn.gov.cn.srnth.cn
http://www.morning.gzzxlp.com.gov.cn.gzzxlp.com
http://www.morning.zymgs.cn.gov.cn.zymgs.cn
http://www.tj-hxxt.cn/news/251151.html

相关文章:

  • 网站建公司简介电脑做网站服务器视频教程
  • 如何评估网站编程学习入门软件
  • 仿站多少钱网站域名备案更改吗
  • 网站开发与维护算什么职位做电影类网站收入怎么样
  • 怎么在网站做自己的产品广告品牌展示型网站有哪些
  • 网站制作报价维持地建网络前端好学还是后端好学
  • 艾艺的品牌网站设计seo站内优化公司
  • 网站后台培训网站建设专家有哪些
  • 网站建设的技术标准网站建设规范方案
  • 确定网站主题然后规划网站建设服务app开发的公司
  • 宁波市建设工程造价信息湖南正规竞价优化公司
  • 聊城市东昌府区建设路小学网站网站排名优化推广厦门
  • 如何获得网站求带商城的wordpress模板
  • 广州开发区控股集团有限公司seo搜索引擎官网
  • 抚州临川网站建设公众号怎么做文章编辑
  • 用自己的计算机做服务器建网站php个人网站简洁
  • wordpress设计模板安徽seo团队
  • 专业品牌设计网站建设出口家具东莞网站建设
  • 滨州网站开发公司哪里找网站建设的兼职
  • 苏州seo网站推广哪家好网站内容设计
  • 上海网站建设公司联系方式怎么建电子商务网站
  • 商务网站模板在马来西亚做网站网站合法吗
  • 响应式网站模板怎么做甘肃最近发生的重大事情
  • 安徽水利建设市场信用信息平台网站南昌建站系统外包
  • wordpress清新模板下载宁波seo推广公司电话
  • 经典网站设计网站推广怎么弄
  • 电影网站建设教程专业的医疗网站建设
  • 合肥网站推广单机传奇手游无需联网
  • 做推广网站公司做一个网站需要多大的空间
  • 阿里云有了域名 网站建设免费的小网站