Go 函数调用

2023-04-13 03:19:41 阅读:891 评论:0 点赞:0
所属分类: Go 语言学习笔记

一、前言

一个简单的代码示例:

package main

func myFunction(a, b int) (int, int) {
	return a + b, a - b
}

func main() {
	myFunction(66, 77)
}

二、参数传递

函数参数传递分为值传递和引用传递,下面是两者的区别:
传值:函数调用时会多参数进行拷贝,调用方和被调用方持有不相关的两份数据。
引用传递:函数调用时会传递参数的指针,被调用方和调用方两者持有相同的数据,任意一方做出的修改都会影响另一方。

注意

Go 语言选择了传值的方式,无论是传递基本类型、结构体还是指针,都会对传递的参数进行拷贝。所以如果当前数组的大小非常的大,这种传值的方式会对性能造成比较大的影响。

提示

若传递的参数是指针时,函数内部会复制指针,即两个指针同时指向原有的内存地址,所以在 Go 中指针也是值传递。

所以在传递参数是数组或者内存占用非常大的结构体时,我们应该尽量使用指针作为参数类型,进而避免因为数据拷贝带来的性能影响。

附录

参考原文《Go语言设计与实现》

永不言弃

职业:后端开发工程师
学校:重庆师范大学
城市:重庆
文章:169
好吧,不知道说点什么...

登录逐梦笔记

注册逐梦笔记

已有账号?