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函数内时为引用传递。