Golang中参数传递方式方法


当前第2页 返回上一页

从数据结构图中可看出,Slice可以理解成结构体类型,包含底层数组首元素地址、数组len、容量三个字段,slice对象在参数传值过程中,把三个字段的值传递过去了,实际上changeSliceMember函数内slice在内存中的地址和main中的slice内存地址不一样,只是字段值是一样的,而第一个字段Pointer的值就是底层数组首元素地址,因此可以直接改变元素内容

可以与下面代码做对比,理解:


1

2

3

4

5

6

7

8

9

10

11

12

package main

 

func main() {

 value := new(int)

 modifyFunc(value)

 println("main:", value)

}

 

func modifyFunc(value *int) {

 value = nil

 println("modifyFunc:", value)

}

执行结果:


1

2

modifyFunc: 0x0

main: 0xc820049f30

可以看出,即使传值为指针,仍未改变变量value在main中的值,因为modifyFunc中value的值为指针,和main中的value值一样,但是俩对象本身是两个对象,读者可以细细体会

以上就是Golang中参数传递方式方法的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

Python基础环境搭建的方法(图文)

Python怎么安装tensorflow

django 模型

Python中字典操作的总结(六种)

Python的浮点数占多少个字节

Python如何查找子字符串

Python常用库有哪些

Python中while循环的使用方法

从django的中间件直接返回请求的方法

Python中enumerate什么意思

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...