当前位置: 首页 > article >正文

【Golang 面试题】每日 3 题(七)

✍个人博客:Pandaconda-CSDN博客
📣专栏地址:http://t.csdnimg.cn/UWz06
📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

19. 地址传递(引用传递)

地址传递是指函数参数传递时,传递的是值的地址,函数中对参数值的修改会影响原始值。在 Go 语言中,切片、map 和指针等类型都是以地址的形式传递的。

示例代码:

func main() {
    a := []int{1, 2, 3}
    fmt.Println("Before calling function, a is:", a)
    changeValue(&a)
    fmt.Println("After calling function, a is:", a)
}

func changeValue(arr *[]int) {
    (*arr)[0] = 10
    fmt.Println("In function, arr is:", *arr)
}

输出结果:

Before calling function, a is: [1 2 3]
In function, arr is: [10 2 3]
After calling function, a is: [10 2 3]

可以看到,在函数 changeValue() 中对参数 arr 的修改,实际上也修改了原始值 a。

总之,使用值传递还是地址传递需要根据实际情况来决定,一般来说,如果参数是一个大型的结构体或者数组,使用地址传递可以避免值的拷贝,提高程序的效率。如果参数是一个简单的值类型,使用值传递即可。

20. Go 函数参数传递到底是值传递还是引用传递?

先说下结论:

Go 语言中所有的传参都是值传递(传值),都是一个副本,一个拷贝。

参数如果是非引用类型(int、string、struct 等这些),这样就在函数中就无法修改原内容数据;如果是引用类型(指针、map、slice、chan等这些),这样就可以修改原内容数据。

是否可以修改原内容数据,和传值、传引用没有必然的关系。在 C++ 中,传引用肯定是可以修改原内容数据的,在 Go 语言里,虽然只有传值,但是我们也可以修改原内容数据,因为参数是引用类型。

21. 什么是值传递和引用传递?

引用类型和引用传递是 2 个概念,切记!!!

什么是值传递?

将实参的值传递给形参,形参是实参的一份拷贝,实参和形参的内存地址不同。函数内对形参值内容的修改,是否会影响实参的值内容,取决于参数是否是引用类型。

什么是引用传递?

将实参的地址传递给形参,函数内对形参值内容的修改,将会影响实参的值内容。Go 语言是没有引用传递的,在 C++ 中,函数参数的传递方式有引用传递。


http://www.kler.cn/a/457813.html

相关文章:

  • leetcode------mysql
  • 【Rust自学】9.2. Result枚举与可恢复的错误 Pt.1:match、expect和unwrap处理错误
  • debian系linux安装mysql
  • 【数据仓库】spark大数据处理框架
  • ubuntu安装qt creator 并配置交叉编译环境
  • Linux内核修改内存分配策略
  • 对话 Project Astra 研究主管:打造通用 AI 助理,主动视频交互和全双工对话是未来重点
  • 【数字化】华为一体四面细化架构蓝图
  • coturn docker 项目 搭建【一切正常】
  • MySql幻读问题
  • 工业大数据分析算法实战-day19
  • AE Dressler CESAR 1312 Generator Model User Manual
  • 健身房运动锻炼环境音效、健身房器材、健身房环境、过渡、电影制作后期音效 OcularSounds - CINEMATIC GYM SOUND FX
  • 高性能网络框架--fstack
  • Git如何添加子仓库
  • AE/PR/达芬奇模板:自动光标打字机文字标题移动效果动画模板预设
  • Ubuntu系统部署Mysql8.0后设置不区分大小写
  • openfeign-一些配置
  • 异步爬虫之协程的基本原理
  • 基于Android的校园导航系统
  • 科技驱动|暴雨信息赋能金融行业数智升级
  • RCCL/NCCL中的Transports方式选择:P2P or SHM or NET
  • 部署SenseVoice
  • React 组件的通信方式
  • RAG挑战及其解决方案:实践中的应对策略
  • 嵌入式单片机窗口看门狗控制与实现