GOLANG-函数的不定参数传递
注意GOLANG函数的不定参数传递:
当函数的不定参数传递的是切片通过点号拆解的数据时,函数的形参接受的数据将和传递的切片共用底层数组,也就意味着函数内部修改形参的数据,将会影像实参的数据;
如果将切片的值拆解单独赋值给其它变量,然后将多个变量传递给函数,由函数的形参接收,则可以避免函数内部修改实参的数据;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package main import "fmt" func test(num ...int) { num[0] = 12 fmt.Println( "test函数修改后的值:" , num) } func main() { a := []int{1,2,3} a1, a2, a3 := a[0], a[1], a[2] test(a1, a2, a3) fmt.Println(a, a[0]) fmt.Println( "====================================" ) test(a...) fmt.Println(a, a[0]) } /* test函数修改后的值: [12 2 3] [1 2 3] 1 ==================================== test函数修改后的值: [12 2 3] [12 2 3] 12 */ |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」