go_函数参数的传递方式

函数参数的传递方式

值类型和引用类型:值类型参数默认就是值传递;引用类型参数默认就是引用传递。

两种传递方式

  1. 值传递
  2. 引用传递

其实,不管是值传递还是引用传递,传递给函数的都是变量的副本,不同的是,值传递的是值的拷贝,引用传递的是地址的拷贝。一般来说,地址拷贝效率高,因为数据量小;而值拷贝取决于拷贝的数据大小,数据越大,效率越低。

 值类型和引用类型

1)值类型:基本数据类型int系列,float系列,bool,string、数组和结构体struct

2)引用类型:指针、slice切片、map、管道chan、interface等都是引用类型

值传递和引用传递使用特点

1)值类型默认是值传递:变量直接存储值,内存通常在栈中分配

2)引用类型默认是引用传递:变量存储的是一个地址,这个地址对应的空间才是真正存储数据值的,内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,由GC(垃圾回收器)来回收 。

 

 3)如果希望函数内的变量能修改函数外的变量,可以传入变量的地址&,函数内以指针的方式操作变量。

变量作用域

说明

1)函数内部声明、定义的变量叫局部变量,作用域仅限于函数内部。

2)函数外部声明、定义的变量叫全局变量,作用域在整个包都有效,如果其首字母为大写,则作用域在整个程序有效。

3)如果变量是在一个代码块,比如for、if中,那么这个变量的作用域就在该代码块。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值