golang基础学习02数组

本文探讨了Golang中数组和切片作为函数参数时的不同行为。当数组作为参数传递时,其行为类似于值类型,而切片则表现为引用类型。通过具体示例展示了如何在函数调用中修改数组和切片,并分析了这种差异背后的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.golang中数组作为参数时是值类型传递,以下代码为例输出:

modify()... [1 99 88 11 22 33 55 100 500 1]
main()... [55 99 88 11 22 33 55 100 500 1]

package main

import (
   "fmt"
)

func main() {
   numbers := [...]int{55, 99, 88, 11, 22, 33, 55, 100, 500, 1}
   //testarray()

   modify(numbers)

   fmt.Println("main()...", numbers)
   //methodd()
   //testorder()
   //test2()
}
func modify(params [10]int) {
   params[0] = 1
   fmt.Println("modify()...", params)
}

2:实践中 发现数组声明时候如果不指定...长度,且modify方法接受参数时不指定长度,那么方法修改将直接作用到原数组,输出:

modify()... [1 99 88 11 22 33 55 100 500 1]
main()... [1 99 88 11 22 33 55 100 500 1]

package main

import (
   "fmt"
)

func main() {
   numbers := []int{55, 99, 88, 11, 22, 33, 55, 100, 500, 1}
   //testarray()

   modify(numbers)

   fmt.Println("main()...", numbers)
   //methodd()
   //testorder()
   //test2()
}
func modify(params []int) {
   params[0] = 1
   fmt.Println("modify()...", params)
}

numbers此时应是一个切片数组。所以传递到modify函数内时为引用传递。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值