前言

本文主要给大家介绍了关于Golang参数传递的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
关于参数传递,Golang文档中有这么一句:
after they are evaluated, the parameters of the call are passed by value to the
function and the called function begins execution.
函数调用参数均为值传递,不是指针传递或引用传递。经测试引申出来,当参数变量为指针或隐式指针类型,参数传递方式也是传值(指针本身的copy)
Slice是最常用的数据结构之一,下面以Slice为例,解释Golang的参数传递机制。
Slice数据结构如下:
示例代码:
package main
import "fmt"
func main(){
slice := make([]int, 3, 5)
fmt.Println("before:", slice)
changeSliceMember(slice)
fmt.Println("after:", slice)
}
func changeSliceMember(slice []int) {
if len(slice) > 1 {
slice[0] = 9
}
}
函数执行结果为:
befor:[0 0 0] after:[9 0 0]
解释:
从数据结构图中可看出,Slice可以理解成结构体类型,包含底层数组首元素地址、数组len、容量三个字段,slice对象在参数传值过程中,把三个字段的值传递过去了,实际上changeSliceMember函数内slice在内存中的地址和main中的slice内存地址不一样,只是字段值是一样的,而第一个字段Pointer的值就是底层数组首元素地址,因此可以直接改变元素内容
可以与下面代码做对比,理解:
package main
func main() {
value := new(int)
modifyFunc(value)
println("main:", value)
}
func modifyFunc(value *int) {
value = nil
println("modifyFunc:", value)
}
执行结果:
modifyFunc: 0x0 main: 0xc820049f30
可以看出,即使传值为指针,仍未改变变量value在main中的值,因为modifyFunc中value的值为指针,和main中的value值一样,但是俩对象本身是两个对象,读者可以细细体会
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# golang
# 参数传递
# 值传递
# go
# 一文带你深入了解Golang中的参数传递机制
# Go Slice进行参数传递如何实现详解
# Go语言参数传递是传值还是传引用
# Go语言中函数的参数传递与调用的基本方法
# go中的参数传递是值传递还是引用传递的实现
# 数据结构
# 值为
# 相关内容
# 第一个
# 一句
# 说了
# 不多
# 中有
# 均为
# 给大家
# 可以直接
# 为例
# 可以看出
# 这篇文章
# 谢谢大家
# 仍未
# 图中
# 最常用
# 量为
# 过程中
相关文章:
成都网站制作报价公司,成都工业用气开户费用?
婚礼视频制作网站,学习*后期制作的网站有哪些?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
如何用IIS7快速搭建并优化网站站点?
重庆市网站制作公司,重庆招聘网站哪个好?
高防服务器租用如何选择配置与防御等级?
潮流网站制作头像软件下载,适合母子的网名有哪些?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
如何快速辨别茅台真假?关键步骤解析
建站之星下载版如何获取与安装?
内部网站制作流程,如何建立公司内部网站?
安云自助建站系统如何快速提升SEO排名?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
如何选择CMS系统实现快速建站与SEO优化?
Python路径拼接规范_跨平台处理说明【指导】
如何通过山东自助建站平台快速注册域名?
利用JavaScript实现拖拽改变元素大小
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
盐城做公司网站,江苏电子版退休证办理流程?
如何快速搭建二级域名独立网站?
如何获取上海专业网站定制建站电话?
宿州网站制作公司兴策,安徽省低保查询网站?
c++ stringstream用法详解_c++字符串与数字转换利器
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
免费视频制作网站,更新又快又好的免费电影网站?
如何用5美元大硬盘VPS安全高效搭建个人网站?
定制建站策划方案_专业建站与网站建设方案一站式指南
如何在阿里云高效完成企业建站全流程?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
如何选择最佳自助建站系统?快速指南解析优劣
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
如何快速搭建高效服务器建站系统?
如何高效配置香港服务器实现快速建站?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
如何通过服务器快速搭建网站?完整步骤解析
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
如何获取免费开源的自助建站系统源码?
定制建站方案优化指南:企业官网开发与建站费用解析
C++如何使用std::optional?(处理可选值)
建站主机核心功能解析:服务器选择与网站搭建流程指南
建站主机与服务器功能差异如何区分?
Python多线程使用规范_线程安全解析【教程】
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
如何选择服务器才能高效搭建专属网站?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
*请认真填写需求信息,我们会在24小时内与您取得联系。