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

企业网站首页效果图wordpress支持哪一版本php

企业网站首页效果图,wordpress支持哪一版本php,网站建设实训记录,海门城乡建设管理局网站上一章中对于golang的语言基础说明如下#xff1a;1 函数调用2 接口3 反射接下来我们来对golang的常用关键字进行说明#xff0c;主要内容有#xff1a;1. for 和 range2. select3. defer4. panic 和 recover5. make 和 new— — — — — — — — — — — — — — — —…上一章中对于golang的语言基础说明如下1 函数调用2 接口3 反射接下来我们来对golang的常用关键字进行说明主要内容有1. for 和 range2. select3. defer4. panic 和 recover5. make 和 new— — — — — — — — — — — — — — — — — — — — — — — — — — — —当我们想要在 Go 语言中初始化一个结构时可能会用到两个不同的关键字 — make 和 new。因为它们的功能相似所以初学者可能会对这两个关键字的作用感到困惑1但是它们两者能够初始化的却有较大的不同。make 的作用是初始化内置的数据结构也就是我们在前面提到的切片、哈希表和 Channel2new 的作用是根据传入的类型分配一片内存空间并返回指向这片内存空间的指针3我们在代码中往往都会使用如下所示的语句初始化这三类基本类型这三个语句分别返回了不同类型的数据结构slice : make([]int, 0, 100) hash : make(map[int]bool, 10) ch : make(chan int, 5)slice 是一个包含 data、cap 和 len 的私有结构体 internal/reflectlite.sliceHeaderhash 是一个指向 runtime.hmap 结构体的指针ch 是一个指向 runtime.hchan 结构体的指针相比与复杂的 make 关键字new 的功能就很简单了它只能接收一个类型作为参数然后返回一个指向该类型的指针i : new(int)var v int i : v上述代码片段中的两种不同初始化方法是等价的它们都会创建一个指向 int 零值的指针。图 - make 和 new 初始化的类型接下来我们将分别介绍 make 和 new 在初始化不同数据结构时的过程我们会从编译期间和运行时两个不同阶段理解这两个关键字的原理不过由于前面的章节已经详细地分析过 make 的原理所以这里会将重点放在另一个关键字 new 上。1. make在前面的章节中我们已经谈到过 make 在创建切片、哈希表和 Channel 的具体过程所以在这一小节我们只是会简单提及 make 相关的数据结构的初始化原理。图 - make 关键字的类型检查在编译期间的类型检查阶段Go 语言就将代表 make 关键字的 OMAKE 节点根据参数类型的不同转换成了 OMAKESLICE、OMAKEMAP 和 OMAKECHAN 三种不同类型的节点这些节点会调用不同的运行时函数来初始化相应的数据结构。2. new编译器会在中间代码生成阶段通过以下两个函数处理该关键字cmd/compile/internal/gc.callnew 函数会将关键字转换成 ONEWOBJ 类型的节点2cmd/compile/internal/gc.state.expr 函数会根据申请空间的大小分两种情况处理如果申请的空间为 0就会返回一个表示空指针的 zerobase 变量在遇到其他情况时会将关键字转换成 runtime.newobject 函数func callnew(t *types.Type) *Node {...n : nod(ONEWOBJ, typename(t), nil)...return n }func (s *state) expr(n *Node) *ssa.Value {switch n.Op {case ONEWOBJ:if n.Type.Elem().Size() 0 {return s.newValue1A(ssa.OpAddr, n.Type, zerobaseSym, s.sb)}typ : s.expr(n.Left)vv : s.rtcall(newobject, true, []*types.Type{n.Type}, typ)return vv[0]} }需要注意的是无论是直接使用 new还是使用 var 初始化变量它们在编译器看来就是 ONEWOBJ 和 ODCL 节点。这些节点在这一阶段都会被 cmd/compile/internal/gc.walkstmt 转换成通过 runtime.newobject 函数在堆上申请内存func walkstmt(n *Node) *Node {switch n.Op {case ODCL:v : n.Leftif v.Class() PAUTOHEAP {if prealloc[v] nil {prealloc[v] callnew(v.Type)}nn : nod(OAS, v.Name.Param.Heapaddr, prealloc[v])nn.SetColas(true)nn typecheck(nn, ctxStmt)return walkstmt(nn)}case ONEW:if n.Esc EscNone {r : temp(n.Type.Elem())r nod(OAS, r, nil)r typecheck(r, ctxStmt)init.Append(r)r nod(OADDR, r.Left, nil)r typecheck(r, ctxExpr)n r} else {n callnew(n.Type.Elem())}} }不过这也不是绝对的如果通过 var 或者 new 创建的变量不需要在当前作用域外生存例如不用作为返回值返回给调用方那么就不需要初始化在堆上。runtime.newobject 函数会是获取传入类型占用空间的大小调用 runtime.mallocgc 在堆上申请一片内存空间并返回指向这片内存空间的指针func newobject(typ *_type) unsafe.Pointer {return mallocgc(typ.size, typ, true) }runtime.mallocgc 函数的实现大概有 200 多行代码我们会在后面的章节中详细分析 Go 语言的内存管理机制。3. 小结到了最后简单总结一下 Go 语言中 make 和 new 关键字的实现原理make 关键字的作用是创建切片、哈希表和 Channel 等内置的数据结构而 new 的作用是为类型申请一片内存空间并返回指向这片内存的指针。全套教程点击下方链接直达IT实战Go语言设计与实现自学教程​zhuanlan.zhihu.com
http://wiki.neutronadmin.com/news/156543/

相关文章:

  • 晋江做网站模板设计网页制作策划路程
  • WordPress建站收费设计教育培训
  • 做网站工单网站有收录没排名
  • 淘宝网站建设的优点深圳成品网站超市
  • 网页制作分工明细网站建设优化托管
  • 广东英德网站建设wordpress 5.0网易云音乐
  • seo网站关键词排名优化免费炫酷网站模板
  • 律所网站建设国队男子接力赛手机网站开发下载
  • 网站建设的专业知识wordpress 404跳转首页
  • 静态网站设计方案广州百度网站推广
  • 思途智旅游网站开发站长工具pr值查询
  • 承德做网站手机软件推广平台
  • 营销型企业网站建设步骤企业做网站设计
  • 二级域名怎么指向另外一个网站做视频的音乐哪里下载网站
  • 文库网站建设哪个做问卷网站佣金高
  • 青岛做门户网站的有哪些平面设计app软件有哪些
  • 做一个基础的企业网站多少钱wordpress管理员角色
  • 品牌网站建设费qq邮箱登录入口网页版
  • 橙色企业网站源码ps网页界面设计
  • 代码命名 网站火车头采集器wordpress下载
  • 网站广告位设计网站建设后期
  • 中山网站搭建二级域名注册平台
  • wordpress外贸站网站开发后端工资多少
  • 凡科建站视频教程网站建设 物流
  • 如何申请国外网站江苏海宏建设工程有限公司网站
  • 全国网站建设公司有多少家google地图嵌入网站
  • 哈尔滨门户网站建站烟台logo设计公司
  • 金汇网站建设设置wordpress导航栏
  • html网页设计毕业设计网站快照优化公司
  • 建设部网站从哪登陆vs制作网页教程