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

soho需不需要做网站弄企业邮箱wordpress迅雷插件

soho需不需要做网站弄企业邮箱,wordpress迅雷插件,软文的概念,湖南省交通建设质量安全监督管理局网站程序中编写的函数在编译阶段会被编译成一段段的指令存放在可执行文件中,在程序运行阶段这些内存会加载到虚拟地址空间的代码段。 当函数A调用了函数B的时候,对应的会生成一条call指令,程序在运行到call指令时就会跳转到对应的B函数的代码段的…

程序中编写的函数在编译阶段会被编译成一段段的指令存放在可执行文件中,在程序运行阶段这些内存会加载到虚拟地址空间的代码段。
当函数A调用了函数B的时候,对应的会生成一条call指令,程序在运行到call指令时就会跳转到对应的B函数的代码段的方法入口。每个函数最后还有一条ret指令,用于在函数执行结束时跳回到调用处。

函数的栈空间一般从栈基bp开始到栈顶sp结束。从bp到sp依次存储了
1.调用者栈基地址 caller bp
2.局部变量
3.返回值
4.参数

函数的运行需要一些关键信息,包括局部变量、参数、返回值等等。这些信息存放在内存栈中。栈空间的数据后进先出,比如上面A调用B,会先加载A需要的信息到栈内,再调用到B时加载B需要的信息到栈内,B执行完后将B用到的信息弹出栈。

call指令会将下一条指令的地址入栈,及A栈帧后面接了一条返回地址信息,然后跳转到被调用函数入口出执行,所以栈空间内会入栈B函数的栈帧

现在栈空间内依次为 :A栈帧->返回地址->B栈帧
程序运行时每个函数的栈布局都遵守统一的约定,所以被调用者可以通过栈指针+偏移量定位到特定的参数和返回值。

return关键字并不是原子性的,先是将返回值赋值,然后执行defer函数,在返回返回值
例1:

func func1(a int) int {defer func() {a++}()a++return a
}
func main() {a := func1(0)fmt.Println(a) // 输出1
}
  1. a++,参数a=1
  2. 执行return,将1赋值给返回值空间,此时返回值为1
  3. 执行defer,将参数a++,此时a=2,但返回值空间依然为1
  4. 函数调用结束,返回1

再看一段代码

func func1(a int) (b int) {defer func() {a++b++}()a++return a
}
func main() {a := func1(0)fmt.Println(a) // 输出2
}
  1. a++,参数a=1
  2. 执行return,将1赋值给返回值空间,此时返回值为1
  3. 执行defer,将参数a++,此时a=2,然后将返回值b++,此时b=2
  4. 调用结束,返回2

理解了函数调用时数据的分配就可以理解上面的问题。

另一个关键点是指针参数问题

func func1(a *int) {defer func() {*a++}()*a++return
}
func main() {a := 0func1(&a)fmt.Println(a) // 输出2
}

golang中方法都是值传递,但是传递的值是指针类型,里面存放的是数据的地址。

下面看一下引用类型的例子

func func1(a []int) {a[0] = 1return
}
func main() {a := []int{0}func1(a)fmt.Println(a) // 输出[1]
}

这段代码中 调用func1时传递的是slice类型的参数,slice类型是引用的底层数据,所以func1改变数据底层数据时,main中的局部变量a也受到了改变。

func func1(a []int) {a = append(a, 1, 2, 3)return
}
func main() {a := []int{0}func1(a)fmt.Println(a) // 输出[0]
}

这段代码因为func1对a执行了append,触发了slice的扩容,底层开辟了一个新的数组并重新引用了新的数组,所以原数组没有受到影响。

http://www.yayakq.cn/news/730398/

相关文章:

  • 合肥网站专业制作二维码表白在线制作
  • 网站意见反馈源码怎么修改自己公司网站
  • 宁波seo站外优化推广怎么做挖矿网站
  • 软件工程在网站建设在建设部网站上的举报
  • 做华为网站的还有哪些功能吗小视频关键词汇总
  • 07年做网站crm系统公司排名
  • 河南网站建设设计有关于网站建设类似的文章
  • 网站建设如何赚钱宁波网站建设小程序开发
  • 网站建设 绵阳建立一个自己的网站需要多少钱
  • 外汇平台 网站开发服务专业建设
  • 东胜区建设局网站磁力猫引擎
  • 十九冶成都建设有限公司网站flash型的著名网站
  • 生成wap网站云南省建设执业注册管理中心网站
  • 图解asp.net网站开发实战网站首页确认书
  • 河南襄县做网站的公司心馨人生网站建设设计
  • 重庆网站建设重庆营销型网站是通过对网
  • WordPress电影资源分享下载站挖矿网站怎么做
  • wordpress 搭建网站什么企业做网站比较好
  • 网站如何提高流量黑龙江建设教育信息网官网
  • 网站建设人员组织推广引流方案
  • 关于网站建设的文章深圳管控最新消息
  • 企业站模板网页设计英语怎么说
  • 专注网站基础优化网站群维护方案
  • 我想弄个网站宁波网络公司联系方式
  • 搜索关键词的网站网站建设与设计毕业设计
  • wordpress兼容html5庆云网站seo
  • 网站建设网站合同版本wordpress多媒体不显示
  • 网站解析打不开帝国cms wordpress
  • python 网站开发小项目做婚纱网站的图片素材
  • 怎么用网站做word文件荣耀手机商城官方网站售后