【Go参数传递:值类型、引用类型和指针类型】

Python019

【Go参数传递:值类型、引用类型和指针类型】,第1张

修改参数

值类型

指针类型

引用类型

chan

类型零值

总结 :在Go语言中, 函数的参数传递只有值传递 ,而且传递的实参都是原始数据的一份拷贝。如果拷贝的内容是值类型的,那么在函数中无法修改原始数据,如果拷贝的内容是指针(或者可以理解为引用类型),那么可以在函数中修改原始数据。

不一定。

参数传入到函数中时,函数会在栈空间中,为函数参数开辟对应的内存。

如果传入的是指针,那么系统会为该参数分配指针类型大小的空间,比如32位机就是4个字节。

而传入的变量,分配空间大小就是实际占用的大小。比如char就是1个字节,short就是2个字节,double就是8个字节等。

可以看到,指针和实际变量比较占用空间并没有绝对的大小关系。如果参数是字符型char,那么直接用char比用指针更省内存。

所以具体何种方式更省内存,还需要看参数真正的sizeof值才可以。

假设有以下三个方法

大多数情况下都要使用指针传递

还有一些情况不需要使用指针

大结构体和小结构体如何区分

没有相关知道,需要自己判断

Pointers vs. values in parameters and return values