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

    作者:课课家教育更新于: 2020-06-16 14:22:28

    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业界_编程语言_数据库_课课家

     

课课家教育

未登录

1