[每日code001]考察基础

原创 ryan007  2019-08-01 00:29  阅读 138 次

请说出输出的结果,并且说出为什么?

package main

import "fmt"

func foo(arg [3]int) {
	arg[1] = 9
	fmt.Println("foo:", arg)
}


func bar(arg []int) {
	arg[1] = 10
	fmt.Println("bar:", arg)
}


func main() {
	arg1 := [3]int{1, 2, 3}
	arg2 := []int{4, 5, 6}

	fmt.Println(arg1)
	fmt.Println(arg2)
	foo(arg1)
	bar(arg2)

	fmt.Println(arg1)
	fmt.Println(arg2)
}

本题主要考察数组和切片的区别,函数对数组和切片的影响,函数值传递、引用传递

请看输出结果

 

[1 2 3]
[4 5 6]
foo: [1 9 3]
bar: [4 10 6]
[1 2 3]
[4 10 6]

为什么是这样呢?

深入golang数组、切片底层,可以发现这两者的区别是很大的。

请戳https://www.jianshu.com/p/030aba2bff41

 

本文地址:http://it.zhongduwang.com/articles/%e6%af%8f%e6%97%a5code001%e8%80%83%e5%af%9f%e5%9f%ba%e7%a1%80
版权声明:本文为原创文章,版权归 ryan007 所有,欢迎分享本文,转载请保留出处!

发表评论


表情