Golang 函数参数的传递方式 值传递,引用传递

基本介绍


我们在讲解函数注意事项和使用细节时,已经讲过值类型和引用类型了,这里我们再系统总结一下,因为这是重难点,值类型参数默认就是值传递,而引用类型参数默认就是引用传递。

两种传递方式(函数默认都是值拷贝)


1)值传递(针对基本数据类型,在传递参数的时候进行了值拷贝)

2)引用传递(传递的是一个地址)

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

结构体默认是值拷贝,那么就会拷贝一个很大的数,这样效率就低下,如果传递的是结构体的地址。那么效率就会很高。区别主要在于效率的问题。

值类型和引用类型


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

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

相关推荐
参.商.6 小时前
【Day48】46. 全排列
leetcode·golang
童话ing12 小时前
【LeetCode】239.滑动窗口最大值
数据结构·算法·leetcode·golang
不会写DN12 小时前
Go 中最主流 JWT 库 jwt -go
开发语言·后端·golang
liuqun031913 小时前
go进阶之gc
开发语言·后端·golang
古城小栈13 小时前
go核武器——pprof 性能分析
golang
zhuhezhang14 小时前
一个用golang开发的文本对比工具
开发语言·后端·golang·wails
Reisentyan15 小时前
[backend]GoLang Learn Data Day 2
开发语言·后端·golang
Tony Bai1 天前
Rust 看了流泪,AI 看了沉默:扒开 Go 泛型最让你抓狂的“残疾”类型推断
开发语言·人工智能·后端·golang·rust
ん贤1 天前
AI 大模型落地系列|Eino 编排进阶篇:一文讲透编排(Chain 与 Graph)
人工智能·golang·编排·eino
GDAL1 天前
BoltDB vs SQLite:极简高并发、低配置场景下的终极对比
golang·sqlite·boltdb