【golang学习笔记】Go语言中参数的传递是值传递还是引用传递

前言

Go中所有的参数传递都是值传递,是对数据进行一个拷贝。具体分为引用类型和非引用类型

  • 非引用类型(值类型):int,string,float,bool,数组和struct;

    特点:值类型变量声明后,直接存的就是对应的数据。

  • 引用类型:指针,slice,map,channel,接口,函数等。

    特点:变量存放的是一个内存地址值,这个地址值指向的空间存的才是最终的值。内存通常在堆中分配,当没有任务变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,通过GC回收。

这里我所说的值传递,意思就是引用类型在传递的时候,其实是将值实际地址,也就是当前变量所存的地址拷贝一份进行传递。

值传递

代码:

package main

import "fmt"

func main() {
   
   var value = 3

   //因为int为值类型 所以需要取地址符
   fmt.Printf("modify before addr: %p value: %d\n", &value, value)

   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vivien_o.O

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值