您的位置 首页 golang

golang中怎么判断一个变量是array还是slice?

区分数组和切片的区别:

  • 1.数组是固定长度的,长度一旦确定无法修改,无法变长也无法变短。而切片容量大小是可以伸缩的
  • 2.数组是值类型,切片是指针类型

进一步代码举例说下两者的区别:

(1) 通过反射弧判断Array还是Slice

 func main() {
	arr1 := [3]int{1,2,3}        //指定长度Array
	slice1 := []int{1,2,3}       //不指定长度

	//注:Slice就是长度可变的Array

	//反射弧判断是Array还是Slice
	fmt.Println(reflect.TypeOf(arr1).Kind())
	fmt.Println(reflect.TypeOf(slice1).Kind())
}  

输出:

 array
slice  

(2)指定长度和不指定长度初始化的不同

   arr1 :=[3]int{1,2,3}        //指定长度Array
	arr2 := [...]int{1,2,3}      //不指定长度Array

	slice1 :=make([]int,3)  //指定长度Slice
	slice2 := []int{1,2,3}     //不指定长度Slice  

(3) 函数传值

Array值传递

 func main() {
	arr1 := [3]int{1, 2, 3}

	func(arr [3]int) {
		arr[0] = 7
		fmt.Println(arr)
	}(arr1)

	fmt.Println(arr1)
}  

输出:

 [7 2 3]
[1 2 3]  

Slice指针传递

 func main() {
	slice1 := []int{1, 2, 3}

	func(arr []int) {
		arr[0] = 7
		fmt.Println(arr)
	}(slice1)

	fmt.Println(slice1)
}  

输出:

 [7 2 3]
[7 2 3]  

聪明出于勤奋,天才在于积累。

文章来源:智云一二三科技

文章标题:golang中怎么判断一个变量是array还是slice?

文章地址:https://www.zhihuclub.com/98168.shtml

关于作者: 智云科技

热门文章

网站地图