下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

IT业界:golang中怎么判断一个变量是array还是slice?

作者:课课家教育     来源: 今日头条点击数:1131发布时间: 2020-04-30 11:33:54

标签: IT业界编程语言数据库

软考,您想通过吗?一次通过才是硬道理

Go语言是谷歌2009发布的第二款开源编程语言

Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。

区分数组和切片的区别:

  • 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]

 

Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。

 

IT业界:golang中怎么判断一个变量是array还是slice?_IT业界_编程语言_数据库_课课家